feat(auth): 实现认证API和token自动刷新功能
添加认证服务API模块,包括登录、token刷新和验证功能 在axios拦截器中实现token自动刷新机制,处理401错误 更新tsconfig配置以支持ES2020特性 重构API导入路径以使用新的auth模块结构
This commit is contained in:
83
src/api/auth/auth.ts
Normal file
83
src/api/auth/auth.ts
Normal 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");
|
||||
};
|
||||
Reference in New Issue
Block a user