guhongwei 4 rokov pred
rodič
commit
8793f7499d

+ 5 - 2
src/layout/layout-part/heads.vue

@@ -11,7 +11,7 @@
           <span @click="passwdBtn()"><i class="iconfont iconmima_huaban1"></i>修改密码</span>
           <span
             ><i class="iconfont iconicon-person"></i>
-            <span v-if="user">
+            <span v-if="user.id">
               {{ user.name }}
             </span>
             <span v-else>
@@ -56,7 +56,10 @@ export default {
       passwdDia: false,
     };
   },
-  created() {},
+  created() {
+    console.log('denglu');
+    console.log(this.user);
+  },
   methods: {
     // 绑定微信
     bindBtn() {

+ 9 - 0
src/router/before.js

@@ -0,0 +1,9 @@
+import store from '@/store/index';
+
+const checkLogin = (router, func) => {
+  router.beforeEach(async (to, form, next) => {
+    let res = await store.dispatch('login/toGetUser', func ? func : null);
+    next();
+  });
+};
+export default checkLogin;

+ 2 - 1
src/router/index.js

@@ -1,5 +1,6 @@
 import Vue from 'vue';
 import VueRouter from 'vue-router';
+import checkLogin from './before';
 
 Vue.use(VueRouter);
 
@@ -74,5 +75,5 @@ const router = new VueRouter({
   base: process.env.NODE_ENV === 'development' ? '' : process.env.VUE_APP_ROUTER,
   routes,
 });
-
+checkLogin(router);
 export default router;

+ 5 - 1
src/store/login.js

@@ -8,6 +8,7 @@ const jwt = require('jsonwebtoken');
 Vue.use(Vuex);
 const api = {
   loginInfo: `/api/onlive/login`,
+  getUser: `/api/onlive/token`,
   logoutInfo: `/api/onlive/logout`,
   uppasswdInfo: `/api/onlive/uppasswd`,
 };
@@ -39,7 +40,6 @@ const actions = {
       userInfo = await setUser(res.data.key, commit);
       Notification({
         title: '登录成功',
-        // message: `欢迎,${user.user_name}`,
         type: 'success',
         duration: 2000,
       });
@@ -57,12 +57,15 @@ const actions = {
   },
   async toGetUser({ commit }, payload) {
     let key = localStorage.getItem('token');
+    console.log(key);
     if (!key) {
       if (_.isFunction(payload)) {
         payload();
         return;
       }
       let user = localStorage.getItem('user');
+      console.log(user);
+      console.log('!key');
       if (user) {
         commit('setUser', JSON.parse(user), { root: true });
       } else {
@@ -79,6 +82,7 @@ const actions = {
       let token = _.get(res, `data.data.token`);
       if (token) {
         user = jwt.decode(token);
+        console.log(user);
         commit('setUser', user, { root: true });
       }
     }

+ 3 - 15
src/store/user/mutations.js

@@ -2,26 +2,14 @@ const jwt = require('jsonwebtoken');
 export const setUser = (state, payload) => {
   let res = true;
   //登陆时
+  console.log(payload);
   if (payload) {
-    state.token = payload;
+    state.user = payload;
   } else {
     //已经登陆,切换路由时取出用户信息放在总store中
     let token = localStorage.getItem('token');
-    if (token && token !== 'guest') {
+    if (token) {
       state.user = jwt.decode(token);
-    } else if (token && token == 'guest') {
-      let user = localStorage.getItem('user');
-      state.user = JSON.parse(user);
-    } else {
-      let timestamp = new Date().getTime();
-      let user = {
-        // id: `guest${timestamp}`,
-        name: `游客${timestamp}`,
-      };
-      state.user = user;
-      localStorage.setItem('token', 'guest');
-      localStorage.setItem('user', JSON.stringify(user));
-      console.warn('游客身份');
     }
   }
   return res;

+ 3 - 1
src/views/index.vue

@@ -22,7 +22,9 @@ export default {
   data: function() {
     return {};
   },
-  created() {},
+  created() {
+    console.log(this.user);
+  },
   methods: {},
   computed: {
     ...mapState(['user']),

+ 3 - 1
src/views/login.vue

@@ -50,7 +50,9 @@ export default {
       this.$refs[formName].validate(async valid => {
         if (valid) {
           let res = await this.toLogin({ user: this.form });
-          console.log(res);
+          if (res.id) {
+            this.$router.push('/');
+          }
         } else {
           console.log('error submit!!');
           return false;