Browse Source

fix cookie token bug

Pan 7 years ago
parent
commit
822c59bdba
4 changed files with 24 additions and 7 deletions
  1. 2 1
      src/main.js
  2. 5 5
      src/store/modules/user.js
  3. 15 0
      src/utils/auth.js
  4. 2 1
      src/utils/fetch.js

+ 2 - 1
src/main.js

@@ -11,6 +11,7 @@ import 'nprogress/nprogress.css'
 import 'normalize.css/normalize.css'
 import '@/assets/iconfont/iconfont'
 import IconSvg from '@/components/Icon-svg/index.vue'
+import { getToken } from '@/utils/auth'
 
 Vue.config.productionTip = false
 
@@ -20,7 +21,7 @@ Vue.component('icon-svg', IconSvg)
 const whiteList = ['/login'];
 router.beforeEach((to, from, next) => {
   NProgress.start();
-  if (store.getters.token) {
+  if (getToken()) {
     if (to.path === '/login') {
       next({ path: '/' });
     } else {

+ 5 - 5
src/store/modules/user.js

@@ -1,9 +1,9 @@
 import { login, logout, getInfo } from '@/api/login';
-import Cookies from 'js-cookie';
+import { getToken, setToken, removeToken } from '@/utils/auth';
 
 const user = {
   state: {
-    token: Cookies.get('Admin-Token'),
+    token: getToken(),
     name: '',
     avatar: '',
     roles: []
@@ -31,7 +31,7 @@ const user = {
       return new Promise((resolve, reject) => {
         login(email, userInfo.password).then(response => {
           const data = response.data;
-          Cookies.set('Admin-Token', data.token);
+          setToken(data.token);
           commit('SET_TOKEN', data.token);
           resolve();
         }).catch(error => {
@@ -62,7 +62,7 @@ const user = {
         logout(state.token).then(() => {
           commit('SET_TOKEN', '');
           commit('SET_ROLES', []);
-          Cookies.remove('Admin-Token');
+          removeToken();
           resolve();
         }).catch(error => {
           reject(error);
@@ -74,7 +74,7 @@ const user = {
     FedLogOut({ commit }) {
       return new Promise(resolve => {
         commit('SET_TOKEN', '');
-        Cookies.remove('Admin-Token');
+        removeToken();
         resolve();
       });
     }

+ 15 - 0
src/utils/auth.js

@@ -0,0 +1,15 @@
+import Cookies from 'js-cookie'
+
+const TokenKey = 'Admin-Token'
+
+export function getToken() {
+  return Cookies.get(TokenKey)
+}
+
+export function setToken(token) {
+  return Cookies.set(TokenKey, token)
+}
+
+export function removeToken() {
+  return Cookies.remove(TokenKey)
+}

+ 2 - 1
src/utils/fetch.js

@@ -1,6 +1,7 @@
 import axios from 'axios';
 import { Message } from 'element-ui';
 import store from '../store';
+import { getToken } from '@/utils/auth';
 
 
 // 创建axios实例
@@ -12,7 +13,7 @@ const service = axios.create({
 // request拦截器
 service.interceptors.request.use(config => {
   if (store.getters.token) {
-    config.headers['X-Token'] = store.getters.token; // 让每个请求携带自定义token 请根据实际情况自行修改
+    config.headers['X-Token'] = getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改
   }
   return config;
 }, error => {