美文网首页
路由导航守卫

路由导航守卫

作者: 这是这时 | 来源:发表于2020-01-07 23:50 被阅读0次
import Vue from 'vue';
import Router from 'vue-router';
import { Message } from 'element-ui';
import Login from "@/components/login.vue";
import Home from "@/components/home.vue";
import Users from '@/components/users.vue';
import Rights from '@/components/rights.vue';
import Roles from '@/components/roles.vue';
import Goodlist from '@/components/goodslist.vue';
import Goodsadd from '@/components/goodsadd.vue';

Vue.use(Router)

const router = new Router({
    routes: [{
        name: 'login',
        path: '/login',
        component: Login
    },
    {
        path: '/',
        name: 'home',
        component: Home,
        children: [{
            //users在home组件内部
            name: 'users',
            path: '/users',
            component: Users
        }, {
            name: 'rights',
            path: '/rights',
            component: Rights
        }, {
            name: 'roles',
            path: '/roles',
            component: Roles
        }, 
        {
            name:'goods',
            path:'/goods',
            component:Goodlist
        },
        {
            name:'goodsadd',
            path:'/goodsadd',
            component:Goodsadd
        }
    ]
    }
    ]
})

// 路由导航守卫
// 任何路由标识变化-》来到路由配置-》自动来到路由守卫-》渲染组件
router.beforeEach((to,from,next)=>{
console.log('守卫执行----------------');
if(to.name === 'login'){
    // 如果要去的是login ---> next() 
    next();
}else {
    // 如果要去的不是login ---> 
    const token = localStorage.getItem('token'); //取token
    // 2.1 !token --> 去登录  //没有token 跳转到login
    if(!token){
        Message.warning("请先登录");
        router.push({
           name:'login'
        });    
        return;
    }
 next();
}
// 2.2 token --> next() //有token 继续
next();
console.log(to,from);//to 去哪  from 来自哪里
})

export default router;

// // 当标识变化时,最终渲染home
// if (!localStorage.getItem("token")) {
//     //如果没有token 跳转到login页面
//     this.$router.push({
//       name: "login"
//     });
//     this.$message.warning("请先登录!!!"); //提示先登录
//   }

相关文章

  • vue学习笔记(八)导航守卫(全局守卫,路由独享,组件内守卫)

    导航守卫-全局守卫 导航守卫-路由独享 导航守卫-组件内守卫

  • vue-路由导航守卫&异步组件

    导航守卫包括全局导航守卫、路由守卫、组件局部守卫 全局导航守卫 在全局导航守卫中,每次路由的跳转他们三个都会被触发...

  • Vue-Router 导航守卫

    导航守卫 导航表示路由正在发生改变。(变化的路由)导航守卫就是变化的路由钩子。路由钩子的意思可以理解为vue-ro...

  • vue路由守卫

    概念 路由守卫,官网也叫导航守卫,所谓导航,就是路由正在发生变化 路由守卫,主要就是用来通过跳转或取消的方式守卫导...

  • vue导航守卫

    根据作用域的不同,vue导航守卫分三种:全局导航守卫、组件内部导航守卫、路由独享守卫 全局导航守卫,在main.j...

  • Vue导航守卫

    Vue导航守卫 理解 导航守卫也叫路由守卫,可以实时的监控路由的跳转过程,在路由的跳转的各个过程执行相应的操作,有...

  • vue-router进阶

    导航守卫 vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航(路由发生改变才会守卫)。参数 ...

  • vue-9

    通过watch实现路由监听 导航守卫

  • v-router中的导航守卫

    响应路由参数的变化 v-router提供的导航守卫主要用来通过跳转或者取消的方式守卫导航。有多种机会植入路由导航过...

  • Vue - 路由守卫(路由的生命周期)

    路由守卫是什么? 官方解释:“导航”表示路由正在发生改变。正如其名,vue-router提供的导航守卫主要用来通过...

网友评论

      本文标题:路由导航守卫

      本文链接:https://www.haomeiwen.com/subject/oehjactx.html