Skip to content

Commit

Permalink
fix: 修复 store 中并未对 localStorage 的 TOKEN_NAME 键进行赋值的缺陷 (#504)
Browse files Browse the repository at this point in the history
* fix: 接口请求不携带token

* fix: 优化token持久化策略

* fix: 删除多余的log
  • Loading branch information
SpringHgui authored May 18, 2023
1 parent 03adc83 commit 665e0da
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 9 deletions.
5 changes: 3 additions & 2 deletions src/permission.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import NProgress from 'nprogress'; // progress bar
import { MessagePlugin } from 'tdesign-vue-next';
import { RouteRecordRaw } from 'vue-router';

import { TOKEN_NAME } from '@/config/global';
import router from '@/router';
import { getPermissionStore, getUserStore } from '@/store';
import { PAGE_NOT_FOUND_ROUTE } from '@/utils/route/constant';
Expand All @@ -17,8 +18,8 @@ router.beforeEach(async (to, from, next) => {
const { whiteListRouters } = permissionStore;

const userStore = getUserStore();
const { token } = userStore;
if (token) {

if (userStore[TOKEN_NAME]) {
if (to.path === '/login') {
next();
return;
Expand Down
16 changes: 10 additions & 6 deletions src/store/modules/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const InitUserInfo = {

export const useUserStore = defineStore('user', {
state: () => ({
token: localStorage.getItem(TOKEN_NAME) || 'main_token', // 默认token不走权限
[TOKEN_NAME]: 'main_token', // 默认token不走权限
userInfo: { ...InitUserInfo },
}),
getters: {
Expand Down Expand Up @@ -49,7 +49,7 @@ export const useUserStore = defineStore('user', {

const res = await mockLogin(userInfo);
if (res.code === 200) {
this.token = res.data;
this.setToken(res.data);
} else {
throw res;
}
Expand All @@ -67,24 +67,28 @@ export const useUserStore = defineStore('user', {
roles: ['UserIndex', 'DashboardBase', 'login'], // 前端权限模型使用 如果使用请配置modules/permission-fe.ts使用
};
};
const res = await mockRemoteUserInfo(this.token);
const res = await mockRemoteUserInfo(this[TOKEN_NAME]);

this.userInfo = res;
},
async logout() {
localStorage.removeItem(TOKEN_NAME);
this.token = '';
this.removeToken();
this.userInfo = { ...InitUserInfo };
},
async removeToken() {
this.token = '';
this.setToken('');
},
async setToken(token: string) {
this[TOKEN_NAME] = token;
},
},
persist: {
afterRestore: () => {
const permissionStore = usePermissionStore();
permissionStore.initRoutes();
},
key: 'user',
paths: [TOKEN_NAME],
},
});

Expand Down
5 changes: 4 additions & 1 deletion src/utils/request/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import merge from 'lodash/merge';

import { TOKEN_NAME } from '@/config/global';
import { ContentTypeEnum } from '@/constants';
import { getUserStore } from '@/store';

import { VAxios } from './Axios';
import type { AxiosTransform, CreateAxiosOptions } from './AxiosTransform';
Expand Down Expand Up @@ -113,7 +114,9 @@ const transform: AxiosTransform = {
// 请求拦截器处理
requestInterceptors: (config, options) => {
// 请求之前处理config
const token = localStorage.getItem(TOKEN_NAME);
const userStore = getUserStore();
const token = userStore[TOKEN_NAME];

if (token && (config as Recordable)?.requestOptions?.withToken !== false) {
// jwt token
(config as Recordable).headers.Authorization = options.authenticationScheme
Expand Down

0 comments on commit 665e0da

Please sign in to comment.