VUE中router.beforeEach不被执行

// 在此处进行配置全局的路由守卫(全局前置钩子)
// 目的是:判断当前用户中本地存储是否有token,使用户在登录之前,只能访问到/login页面,其他的页面是访问不到的。
router.beforeEach((to, from, next) => {
    // to 即将进入的路由
    // from 在哪个路由进入的
    // next 放行
    console.log(to); //打印的是页面要跳转到的路由,例如:它下面的path:为"/login"
    let token = localStorage.getItem("token") || ""; //在本地存储中获取token
    if (token) {
        //判断是否有token
        next();
    } else {
        //在没有token的前提下,to下面的path是否为/login,如果不是则页面跳转到登录页面
        if (to.path == "/login") {
            next();
        } else {
            next({path: "/login"}); //跳转页面到login页
        }
    }
});

在main中直接放入这段代码,不起作用,这时候需要将new Vue放在main.js最后即:

// 在此处进行配置全局的路由守卫(全局前置钩子)
// 目的是:判断当前用户中本地存储是否有token,使用户在登录之前,只能访问到/login页面,其他的页面是访问不到的。
router.beforeEach((to, from, next) => {
    // to 即将进入的路由
    // from 在哪个路由进入的
    // next 放行
    console.log(to); //打印的是页面要跳转到的路由,例如:它下面的path:为"/login"
    let token = localStorage.getItem("token") || ""; //在本地存储中获取token
    if (token) {
        //判断是否有token
        next();
    } else {
        //在没有token的前提下,to下面的path是否为/login,如果不是则页面跳转到登录页面
        if (to.path == "/login") {
            next();
        } else {
            next({path: "/login"}); //跳转页面到login页
        }
    }
});

new Vue({
    el: '#app',
    router,
    store,
    render: h => h(App),
    beforeCreate() {
        Vue.prototype.$bus = this;
    }
})

问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值