refactor: 【web-ant】重构认证模块并移除未使用的组件和功能【0fed9472】
parent
c881a47ffd
commit
ea4892a5f6
|
@ -17,12 +17,6 @@ export namespace AuthApi {
|
||||||
expiresTime: number;
|
expiresTime: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 刷新 token 返回值 */
|
|
||||||
export interface RefreshTokenResult {
|
|
||||||
data: string;
|
|
||||||
status: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 租户信息返回值 */
|
/** 租户信息返回值 */
|
||||||
export interface TenantResult {
|
export interface TenantResult {
|
||||||
id: number;
|
id: number;
|
||||||
|
@ -49,14 +43,12 @@ export async function loginApi(data: AuthApi.LoginParams) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 刷新 accessToken */
|
/** 刷新 accessToken */
|
||||||
export async function refreshTokenApi() {
|
export async function refreshTokenApi(refreshToken: string) {
|
||||||
// TODO @芋艿:refreshToken 传递
|
return baseRequestClient.post(`/system/auth/refresh-token?refreshToken=${refreshToken}`);
|
||||||
return baseRequestClient.post<AuthApi.RefreshTokenResult>('/system/auth/refresh', {
|
|
||||||
withCredentials: true,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 退出登录 */
|
/** 退出登录 */
|
||||||
|
// TODO @芋艿:有问题 baseRequestClient
|
||||||
export async function logoutApi() {
|
export async function logoutApi() {
|
||||||
return baseRequestClient.post('/system/auth/logout', {
|
return baseRequestClient.post('/system/auth/logout', {
|
||||||
withCredentials: true,
|
withCredentials: true,
|
||||||
|
|
|
@ -50,9 +50,9 @@ function createRequestClient(baseURL: string, options?: RequestClientOptions) {
|
||||||
*/
|
*/
|
||||||
async function doRefreshToken() {
|
async function doRefreshToken() {
|
||||||
const accessStore = useAccessStore();
|
const accessStore = useAccessStore();
|
||||||
debugger
|
const refreshToken = accessStore.refreshToken as string;
|
||||||
const resp = await refreshTokenApi();
|
const resp = await refreshTokenApi(refreshToken);
|
||||||
const newToken = resp.data;
|
const newToken = resp?.data?.data?.accessToken;
|
||||||
accessStore.setAccessToken(newToken);
|
accessStore.setAccessToken(newToken);
|
||||||
return newToken;
|
return newToken;
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,7 @@ function createRequestClient(baseURL: string, options?: RequestClientOptions) {
|
||||||
|
|
||||||
config.headers.Authorization = formatToken(accessStore.accessToken);
|
config.headers.Authorization = formatToken(accessStore.accessToken);
|
||||||
config.headers['Accept-Language'] = preferences.app.locale;
|
config.headers['Accept-Language'] = preferences.app.locale;
|
||||||
|
// 添加租户编号
|
||||||
config.headers['tenant-id'] = tenantEnable ? accessStore.tenantId : undefined;
|
config.headers['tenant-id'] = tenantEnable ? accessStore.tenantId : undefined;
|
||||||
return config;
|
return config;
|
||||||
},
|
},
|
||||||
|
@ -99,7 +100,8 @@ function createRequestClient(baseURL: string, options?: RequestClientOptions) {
|
||||||
// 这里可以根据业务进行定制,你可以拿到 error 内的信息进行定制化处理,根据不同的 code 做不同的提示,而不是直接使用 message.error 提示 msg
|
// 这里可以根据业务进行定制,你可以拿到 error 内的信息进行定制化处理,根据不同的 code 做不同的提示,而不是直接使用 message.error 提示 msg
|
||||||
// 当前mock接口返回的错误字段是 error 或者 message
|
// 当前mock接口返回的错误字段是 error 或者 message
|
||||||
const responseData = error?.response?.data ?? {};
|
const responseData = error?.response?.data ?? {};
|
||||||
const errorMessage = responseData?.error ?? responseData?.message ?? '';
|
const errorMessage =
|
||||||
|
responseData?.error ?? responseData?.message ?? responseData.msg ?? '';
|
||||||
// 如果没有错误信息,则会根据状态码进行提示
|
// 如果没有错误信息,则会根据状态码进行提示
|
||||||
message.error(errorMessage || msg);
|
message.error(errorMessage || msg);
|
||||||
}),
|
}),
|
||||||
|
@ -113,3 +115,11 @@ export const requestClient = createRequestClient(apiURL, {
|
||||||
});
|
});
|
||||||
|
|
||||||
export const baseRequestClient = new RequestClient({ baseURL: 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;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
|
@ -11,6 +11,6 @@ export const overridesPreferences = defineOverridesPreferences({
|
||||||
/** 后端路由模式 */
|
/** 后端路由模式 */
|
||||||
accessMode: 'backend',
|
accessMode: 'backend',
|
||||||
name: import.meta.env.VITE_APP_TITLE,
|
name: import.meta.env.VITE_APP_TITLE,
|
||||||
enableRefreshToken: false, // TODO @芋艿:后续跟进下
|
enableRefreshToken: true
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -59,9 +59,9 @@ export const authenticateResponseInterceptor = ({
|
||||||
}): ResponseInterceptorConfig => {
|
}): ResponseInterceptorConfig => {
|
||||||
return {
|
return {
|
||||||
rejected: async (error) => {
|
rejected: async (error) => {
|
||||||
const { config, response } = error;
|
const { config, response, data: responseData } = error;
|
||||||
// 如果不是 401 错误,直接抛出异常
|
// 如果不是 401 错误,直接抛出异常
|
||||||
if (response?.status !== 401) {
|
if (response?.status !== 401 && responseData.code !== 401) {
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
// 判断是否启用了 refreshToken 功能
|
// 判断是否启用了 refreshToken 功能
|
||||||
|
@ -131,7 +131,7 @@ export const errorMessageResponseInterceptor = (
|
||||||
}
|
}
|
||||||
|
|
||||||
let errorMessage = '';
|
let errorMessage = '';
|
||||||
const status = error?.response?.status;
|
const status = error?.code || error?.response?.data?.code || error?.response?.status;
|
||||||
|
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case 400: {
|
case 400: {
|
||||||
|
|
Loading…
Reference in New Issue