Przeglądaj źródła

sync login token with local-storage

hare8999@163.com 2 lat temu
rodzic
commit
a552f81000

+ 1 - 0
src/permission.js

@@ -14,6 +14,7 @@ const uaWhiteList = ['/question/preview']
 router.beforeEach(async(to, from, next) => {
   NProgress.start()
   const token = auth.getToken()
+  await store.dispatch('SyncToken', token)
   // 白名单检测
   if (!token && !whiteList.includes(to.path)) {
     next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页

+ 8 - 0
src/store/modules/user.js

@@ -18,10 +18,18 @@ const user = {
         }
         state[key] = newInfo[key]
       })
+    },
+    SYNC_TOKEN: (state, token) => {
+      Vue.set(state, 'token', token)
     }
   },
 
   actions: {
+    // 同步login-token
+    SyncToken({ commit }, token) {
+      commit('SYNC_TOKEN', token)
+    },
+
     // 登录
     Login({ dispatch, commit, state }, userInfo) {
       const username = userInfo.username.trim()

+ 2 - 6
src/views/components/blocks/index-login-check-mixin.js

@@ -1,5 +1,4 @@
 import { mapGetters } from 'vuex'
-import auth from '@/utils/auth'
 
 export default {
   provide() {
@@ -8,15 +7,12 @@ export default {
     }
   },
   computed: {
-    ...mapGetters(['currentUser'])
+    ...mapGetters(['currentUser', 'isLogin'])
   },
   methods: {
-    hasLoginToken() {
-      return !!auth.getToken()
-    },
     loginStatusCheck() {
       // 首页统一注入登陆检测方法,未登陆时直接跳至登陆框
-      if (this.hasLoginToken()) {
+      if (this.isLogin) {
         if (!!this.currentUser?.isBind) return Promise.resolve(true)
 
         this.dialogVisible = true