feat:刷新令牌的完整实现
parent
5659dab41e
commit
b79a239b4c
|
@ -48,10 +48,11 @@ export async function refreshTokenApi(refreshToken: string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 退出登录 */
|
/** 退出登录 */
|
||||||
// TODO @芋艿:有问题 baseRequestClient
|
export async function logoutApi(accessToken: string) {
|
||||||
export async function logoutApi() {
|
return baseRequestClient.post('/system/auth/logout', {}, {
|
||||||
return baseRequestClient.post('/system/auth/logout', {
|
headers: {
|
||||||
withCredentials: true,
|
Authorization: `Bearer ${accessToken}`,
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,10 @@ function createRequestClient(baseURL: string, options?: RequestClientOptions) {
|
||||||
const refreshToken = accessStore.refreshToken as string;
|
const refreshToken = accessStore.refreshToken as string;
|
||||||
const resp = await refreshTokenApi(refreshToken);
|
const resp = await refreshTokenApi(refreshToken);
|
||||||
const newToken = resp?.data?.data?.accessToken;
|
const newToken = resp?.data?.data?.accessToken;
|
||||||
|
// add by 芋艿:这里一定要抛出 resp.data,从而触发 authenticateResponseInterceptor 中,刷新令牌失败!!!
|
||||||
|
if (!newToken) {
|
||||||
|
throw resp.data;
|
||||||
|
}
|
||||||
accessStore.setAccessToken(newToken);
|
accessStore.setAccessToken(newToken);
|
||||||
return newToken;
|
return newToken;
|
||||||
}
|
}
|
||||||
|
@ -102,6 +106,10 @@ function createRequestClient(baseURL: string, options?: RequestClientOptions) {
|
||||||
const responseData = error?.response?.data ?? {};
|
const responseData = error?.response?.data ?? {};
|
||||||
const errorMessage =
|
const errorMessage =
|
||||||
responseData?.error ?? responseData?.message ?? responseData.msg ?? '';
|
responseData?.error ?? responseData?.message ?? responseData.msg ?? '';
|
||||||
|
// add by 芋艿:特殊:避免 401 “账号未登录”,重复提示。因为,此时会跳转到登录界面,只需提示一次!!!
|
||||||
|
if (error?.data?.code === 401) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
// 如果没有错误信息,则会根据状态码进行提示
|
// 如果没有错误信息,则会根据状态码进行提示
|
||||||
message.error(errorMessage || msg);
|
message.error(errorMessage || msg);
|
||||||
}),
|
}),
|
||||||
|
|
|
@ -76,7 +76,10 @@ export const useAuthStore = defineStore('auth', () => {
|
||||||
|
|
||||||
async function logout(redirect: boolean = true) {
|
async function logout(redirect: boolean = true) {
|
||||||
try {
|
try {
|
||||||
await logoutApi();
|
const accessToken = accessStore.accessToken as string;
|
||||||
|
if (accessToken) {
|
||||||
|
await logoutApi(accessToken);
|
||||||
|
}
|
||||||
} catch {
|
} catch {
|
||||||
// 不做任何处理
|
// 不做任何处理
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue