双token(未做完)

This commit is contained in:
caozehui
2025-02-07 10:39:30 +08:00
parent c16560a0ca
commit 6065fd1f67
8 changed files with 29 additions and 14 deletions

View File

@@ -43,7 +43,8 @@ class RequestHttp {
config.loading ?? (config.loading = true)
config.loading && showFullScreenLoading()
if (config.headers && typeof config.headers.set === 'function') {
config.headers.set('Authorization', 'Bearer ' + userStore.token)
config.headers.set('Authorization', 'Bearer ' + userStore.accessToken)
config.headers.set('Refresh-token', userStore.refreshToken)
}
return config
},
@@ -63,7 +64,8 @@ class RequestHttp {
tryHideFullScreenLoading()
// 登陆失效
if (data.code == ResultEnum.OVERDUE) {
userStore.setToken('')
userStore.setAccessToken('')
userStore.setRefreshToken('')
userStore.setUserInfo({ name: '' })
router.replace(LOGIN_URL)
ElMessage.error(data.message)

View File

@@ -8,6 +8,7 @@ export namespace Login {
}
export interface ResLogin {
accessToken: string;
refreshToken: string;
userInfo:{
name: string;
}

View File

@@ -30,3 +30,7 @@ export const getDictList = () =>{
return http.get<Dict>('/dictData/dictDataCache')
}
// token刷新
export const refreshToken = () => {
return http.post<Login.ResLogin>(`${rePrefix}/refreshToken`, {},{ loading: false })
}

View File

@@ -74,7 +74,8 @@ const logout = () => {
// 1.执行退出登录接口
await logoutApi();
// 2.清除 Token
userStore.setToken("");
userStore.setAccessToken("");
userStore.setRefreshToken("");
userStore.setUserInfo({name: ""});
dictStore.setDictData([]);
modeStore.setCurrentMode('');

View File

@@ -52,7 +52,7 @@ router.beforeEach(async (to, from, next) => {
// 3.判断是访问登陆页,有 Token 就在当前页面,没有 Token 重置路由到登陆页
if (to.path.toLocaleLowerCase() === LOGIN_URL) {
if (userStore.token) return next(from.fullPath)
if (userStore.accessToken) return next(from.fullPath)
resetRouter()
return next()
}
@@ -61,7 +61,7 @@ router.beforeEach(async (to, from, next) => {
if (ROUTER_WHITE_LIST.includes(to.path)) return next()
// 5.判断是否有 Token没有重定向到 login 页面
if (!userStore.token) return next({ path: LOGIN_URL, replace: true })
if (!userStore.accessToken) return next({ path: LOGIN_URL, replace: true })
// 6.如果没有菜单列表,就重新请求菜单列表并添加动态路由
if (!authStore.authMenuListGet.length) {

View File

@@ -28,7 +28,8 @@ export const initDynamicRouter = async () => {
type: "warning",
duration: 3000
});
userStore.setToken("");
userStore.setAccessToken("");
userStore.setRefreshToken("");
router.replace(LOGIN_URL);
return Promise.reject("No permission");
}
@@ -48,7 +49,8 @@ export const initDynamicRouter = async () => {
});
} catch (error) {
// 当按钮 || 菜单请求出错时,重定向到登陆页
userStore.setToken("");
userStore.setAccessToken("");
userStore.setRefreshToken("");
router.replace(LOGIN_URL);
return Promise.reject(error);
}

View File

@@ -6,14 +6,18 @@ import { USER_STORE_KEY } from "@/stores/constant";
export const useUserStore = defineStore({
id: USER_STORE_KEY,
state: (): UserState => ({
token: "",
accessToken: "",
refreshToken: "",
userInfo: { name: "admin" },
}),
getters: {},
actions: {
// Set Token
setToken(token: string) {
this.token = token;
setAccessToken(accessToken: string) {
this.accessToken = accessToken;
},
setRefreshToken(refreshToken: string) {
this.refreshToken = refreshToken;
},
// Set setUserInfo
setUserInfo(userInfo: UserState["userInfo"]) {

View File

@@ -103,7 +103,8 @@ const login = (formEl: FormInstance | undefined) => {
...loginForm,
password: loginForm.password,
})
userStore.setToken(data.accessToken)
userStore.setAccessToken(data.accessToken)
userStore.setRefreshToken(data.refreshToken)
userStore.setUserInfo(data.userInfo)
const response = await getDictList()
const dictData = response.data as unknown as Dict[]