Commit 411f96a5af8a69c3f68a27ce62f4ecb2fc5f2724

Authored by liuqimichale
1 parent 13061512

登录状态管理

webintroduce/src/components/VHeader.vue
... ... @@ -20,7 +20,8 @@ export default {
20 20 navLinks: [
21 21 {name:'首页',linkPath:'/home'},
22 22 {name:'解决方案',linkPath:'/solution'},
23   - {name:'登录',linkPath:'/login'}
  23 + {name:'登录',linkPath:'/login'},
  24 + {name:'企业介绍',linkPath:'/enterprise'}
24 25 ]
25 26 }
26 27 },
... ...
webintroduce/src/main.js
... ... @@ -3,14 +3,33 @@
3 3 import Vue from 'vue'
4 4 import App from './App'
5 5 import router from './router'
6   -
  6 +import Cookies from 'js-cookie'
7 7 require ('./assets/css/reset.css')
8 8 Vue.config.productionTip = false
9 9  
10 10 router.beforeEach((to, from, next) =>{
11   - console.log(to)
12   - document.title = to.meta.title
13   - next()
  11 +
  12 + if(to.matched.some(record => record.meta.requiresAuth)){
  13 + if(Cookies.get('username')){
  14 + document.title = to.meta.title
  15 + next()
  16 + }else{
  17 + next({
  18 + path:'/login',
  19 + query: { redirect: to.fullPath }
  20 + })
  21 + document.title = '登录'
  22 + }
  23 +
  24 +
  25 + }else {
  26 + document.title = to.meta.title
  27 + next()
  28 + }
  29 +
  30 + // console.log(to)
  31 + //
  32 + // next()
14 33 })
15 34  
16 35 /* eslint-disable no-new */
... ...
webintroduce/src/router/index.js
... ... @@ -19,7 +19,8 @@ export default new Router({
19 19 name: 'home',
20 20 component: home,
21 21 meta: {
22   - title: '首页'
  22 + title: '首页',
  23 + requiresAuth: false
23 24 }
24 25 },
25 26 {
... ... @@ -27,23 +28,37 @@ export default new Router({
27 28 name: 'solution',
28 29 component: solution,
29 30 meta: {
30   - title: '解决方案'
  31 + title: '解决方案',
  32 + requiresAuth: false
31 33 }
32 34 },
33 35 {
34   - path: '/enterprise/:id',
  36 + path: '/enterprise',
35 37 name: 'enterprise',
36 38 component: enterprise,
37 39 meta: {
38   - title: '企业'
39   - }
  40 + title: '企业',
  41 + requiresAuth: true
  42 + },
  43 + child:[
  44 + {
  45 + path: '/enterprise/:id',
  46 + name: 'enterprise',
  47 + component: enterprise,
  48 + meta: {
  49 + title: '企业',
  50 + requiresAuth: true
  51 + },
  52 + }
  53 + ]
40 54 },
41 55 {
42 56 path: '/login',
43 57 name: 'login',
44 58 component: login,
45 59 meta: {
46   - title: '登录'
  60 + title: '登录',
  61 + requiresAuth: false
47 62 }
48 63 }
49 64 ]
... ...
webintroduce/src/views/login.vue
1 1 <template>
2   - <div>登录页面没有公共的头部底部</div>
  2 + <div>登录页面没有公共的头部底部
  3 + {{username}}
  4 + <input type="text" v-model="username">
  5 + <input type="button" name="" value="登录" @click="loginBtn">
  6 + </div>
3 7 </template>
4 8  
5 9 <script>
  10 +import Cookies from 'js-cookie'
6 11 export default {
7   - name: 'login'
  12 + name: 'login',
  13 + data() {
  14 + return {
  15 + username: ''
  16 + }
  17 + },
  18 + methods: {
  19 + loginBtn() {
  20 + Cookies.set('username',this.username)
  21 + console.log(this.$route)
  22 + let redirect = decodeURIComponent(this.$route.query.redirect || '/');
  23 + this.$router.push({//你需要接受路由的参数再跳转
  24 + path: redirect
  25 + });
  26 + }
  27 + }
8 28 }
9 29 </script>
10 30  
... ...