* feat: refreshToken * chore: store refreshToken * chore: generate token using jsonwebtoken * chore: set refreshToken in httpOnly cookie * perf: authHeader verify * chore: add add response interceptor * chore: test refresh * chore: handle logout * chore: type * chore: update pnpm-lock.yaml * chore: remove test code * chore: add todo comment * chore: update pnpm-lock.yaml * chore: remove default interceptors * chore: copy codes * chore: handle refreshToken invalid * chore: add refreshToken preference * chore: typo * chore: refresh token逻辑调整 * refactor: interceptor presets * chore: copy codes * fix: ci errors * chore: add missing await * feat: 完善refresh-token逻辑及文档 * fix: ci error * chore: filename --------- Co-authored-by: vince <vince292007@gmail.com>
54 lines
1.0 KiB
TypeScript
54 lines
1.0 KiB
TypeScript
import { baseRequestClient, requestClient } from '#/api/request';
|
|
|
|
export namespace AuthApi {
|
|
/** 登录接口参数 */
|
|
export interface LoginParams {
|
|
password: string;
|
|
username: string;
|
|
}
|
|
|
|
/** 登录接口返回值 */
|
|
export interface LoginResult {
|
|
accessToken: string;
|
|
desc: string;
|
|
realName: string;
|
|
userId: string;
|
|
username: string;
|
|
}
|
|
|
|
export interface RefreshTokenResult {
|
|
data: string;
|
|
status: number;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 登录
|
|
*/
|
|
export async function loginApi(data: AuthApi.LoginParams) {
|
|
return requestClient.post<AuthApi.LoginResult>('/auth/login', data);
|
|
}
|
|
|
|
/**
|
|
* 刷新accessToken
|
|
*/
|
|
export async function refreshTokenApi() {
|
|
return baseRequestClient.post<AuthApi.RefreshTokenResult>('/auth/refresh', {
|
|
withCredentials: true,
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 退出登录
|
|
*/
|
|
export async function logoutApi() {
|
|
return requestClient.post('/auth/logout');
|
|
}
|
|
|
|
/**
|
|
* 获取用户权限码
|
|
*/
|
|
export async function getAccessCodesApi() {
|
|
return requestClient.get<string[]>('/auth/codes');
|
|
}
|