双token(未做完)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -8,6 +8,7 @@ export namespace Login {
|
||||
}
|
||||
export interface ResLogin {
|
||||
accessToken: string;
|
||||
refreshToken: string;
|
||||
userInfo:{
|
||||
name: string;
|
||||
}
|
||||
|
||||
@@ -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 })
|
||||
}
|
||||
@@ -74,7 +74,8 @@ const logout = () => {
|
||||
// 1.执行退出登录接口
|
||||
await logoutApi();
|
||||
// 2.清除 Token
|
||||
userStore.setToken("");
|
||||
userStore.setAccessToken("");
|
||||
userStore.setRefreshToken("");
|
||||
userStore.setUserInfo({name: ""});
|
||||
dictStore.setDictData([]);
|
||||
modeStore.setCurrentMode('');
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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"]) {
|
||||
|
||||
@@ -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[]
|
||||
|
||||
Reference in New Issue
Block a user