feat(auth): 实现认证API和token自动刷新功能

添加认证服务API模块,包括登录、token刷新和验证功能
在axios拦截器中实现token自动刷新机制,处理401错误
更新tsconfig配置以支持ES2020特性
重构API导入路径以使用新的auth模块结构
This commit is contained in:
2026-01-06 22:17:31 +08:00
parent 05669a6570
commit 8e5558d9a2
6 changed files with 92 additions and 11 deletions

83
src/api/auth/auth.ts Normal file
View File

@@ -0,0 +1,83 @@
import request from "@/plugins/axios";
/**
* 认证服务 API 类型定义
*/
// 统一响应格式
export interface ApiResponse<T = any> {
success: boolean;
message: string;
data: T;
}
// 登录请求参数
export interface LoginRequest {
userAccount: string;
userPassword: string;
}
// 登录响应数据
export interface LoginResponse {
id: number;
userAccount: string;
unionId: string | null;
accessToken: string;
refreshToken: string;
accessTokenExpireTime: number | null;
refreshTokenExpireTime: number | null;
}
// 刷新令牌响应数据
export interface RefreshTokenResponse {
id: number | null;
userAccount: string | null;
unionId: string | null;
accessToken: string;
refreshToken: string;
accessTokenExpireTime: number | null;
refreshTokenExpireTime: number | null;
}
/**
* 认证服务 API
*/
/**
* 用户登录
* @param data 登录请求参数
* @returns 登录响应数据
*/
export const login = (data: LoginRequest): Promise<ApiResponse<LoginResponse>> => {
return request.post("/v1/auth/login", data);
};
/**
* 令牌刷新
* @param refreshToken 刷新令牌
* @returns 新的令牌信息
*/
export const refreshToken = (refreshToken: string): Promise<ApiResponse<RefreshTokenResponse>> => {
return request.post("/v1/auth/refresh", null, {
params: {
refreshToken,
},
});
};
/**
* 获取访问令牌(简化版登录)
* @param data 登录请求参数
* @returns 访问令牌字符串
*/
export const getAccessToken = (data: LoginRequest): Promise<ApiResponse<string>> => {
return request.post("/v1/auth/auth", data);
};
/**
* 令牌验证
* @returns 验证结果
*/
export const validateToken = (): Promise<ApiResponse<boolean>> => {
return request.post("/v1/auth/validate");
};