refactor: 【web-ant】重构认证模块并移除未使用的组件和功能【0fed9472】

pull/62/head
YunaiV 2025-03-26 08:39:07 +08:00
parent c881a47ffd
commit ea4892a5f6
4 changed files with 21 additions and 19 deletions

View File

@ -17,12 +17,6 @@ export namespace AuthApi {
expiresTime: number;
}
/** 刷新 token 返回值 */
export interface RefreshTokenResult {
data: string;
status: number;
}
/** 租户信息返回值 */
export interface TenantResult {
id: number;
@ -49,14 +43,12 @@ export async function loginApi(data: AuthApi.LoginParams) {
}
/** 刷新 accessToken */
export async function refreshTokenApi() {
// TODO @芋艿refreshToken 传递
return baseRequestClient.post<AuthApi.RefreshTokenResult>('/system/auth/refresh', {
withCredentials: true,
});
export async function refreshTokenApi(refreshToken: string) {
return baseRequestClient.post(`/system/auth/refresh-token?refreshToken=${refreshToken}`);
}
/** 退出登录 */
// TODO @芋艿:有问题 baseRequestClient
export async function logoutApi() {
return baseRequestClient.post('/system/auth/logout', {
withCredentials: true,

View File

@ -50,9 +50,9 @@ function createRequestClient(baseURL: string, options?: RequestClientOptions) {
*/
async function doRefreshToken() {
const accessStore = useAccessStore();
debugger
const resp = await refreshTokenApi();
const newToken = resp.data;
const refreshToken = accessStore.refreshToken as string;
const resp = await refreshTokenApi(refreshToken);
const newToken = resp?.data?.data?.accessToken;
accessStore.setAccessToken(newToken);
return newToken;
}
@ -68,6 +68,7 @@ function createRequestClient(baseURL: string, options?: RequestClientOptions) {
config.headers.Authorization = formatToken(accessStore.accessToken);
config.headers['Accept-Language'] = preferences.app.locale;
// 添加租户编号
config.headers['tenant-id'] = tenantEnable ? accessStore.tenantId : undefined;
return config;
},
@ -99,7 +100,8 @@ function createRequestClient(baseURL: string, options?: RequestClientOptions) {
// 这里可以根据业务进行定制,你可以拿到 error 内的信息进行定制化处理,根据不同的 code 做不同的提示,而不是直接使用 message.error 提示 msg
// 当前mock接口返回的错误字段是 error 或者 message
const responseData = error?.response?.data ?? {};
const errorMessage = responseData?.error ?? responseData?.message ?? '';
const errorMessage =
responseData?.error ?? responseData?.message ?? responseData.msg ?? '';
// 如果没有错误信息,则会根据状态码进行提示
message.error(errorMessage || msg);
}),
@ -113,3 +115,11 @@ export const requestClient = createRequestClient(apiURL, {
});
export const baseRequestClient = new RequestClient({ baseURL: apiURL });
baseRequestClient.addRequestInterceptor({
fulfilled: (config) => {
const accessStore = useAccessStore();
// 添加租户编号
config.headers['tenant-id'] = tenantEnable? accessStore.tenantId : undefined;
return config;
},
});

View File

@ -11,6 +11,6 @@ export const overridesPreferences = defineOverridesPreferences({
/** 后端路由模式 */
accessMode: 'backend',
name: import.meta.env.VITE_APP_TITLE,
enableRefreshToken: false, // TODO @芋艿:后续跟进下
enableRefreshToken: true
},
});

View File

@ -59,9 +59,9 @@ export const authenticateResponseInterceptor = ({
}): ResponseInterceptorConfig => {
return {
rejected: async (error) => {
const { config, response } = error;
const { config, response, data: responseData } = error;
// 如果不是 401 错误,直接抛出异常
if (response?.status !== 401) {
if (response?.status !== 401 && responseData.code !== 401) {
throw error;
}
// 判断是否启用了 refreshToken 功能
@ -131,7 +131,7 @@ export const errorMessageResponseInterceptor = (
}
let errorMessage = '';
const status = error?.response?.status;
const status = error?.code || error?.response?.data?.code || error?.response?.status;
switch (status) {
case 400: {