vue 路由登录校验问题

clipboard.png
这样写当访问 home 的时候我的调用栈会爆如下图

clipboard.png

阅读 3.6k
3 个回答

按你写的逻辑,没登录,跳登录页,然而还是没登录,继续跳登录页然后循环爆栈
要判断下 to === login的时候就不要再判断是否登录了

因为你每次进入登陆页都会判断未登录 再次跳入登陆页形成死循环
可以这样写

vueRouter.beforeEach(function (to, from, next) {
    const nextRoute = [ 'account', 'order', 'course'];
    const auth = store.state.auth;
    //跳转至上述3个页面
    if (nextRoute.indexOf(to.name) >= 0) {
        //未登录
        if (!store.state.auth.IsLogin) {
            vueRouter.push({name: 'login'})
        }
    }
    //已登录的情况再去登录页,跳转至首页
    if (to.name === 'login') {
        if (auth.IsLogin) {
            vueRouter.push({name: 'home'});
        }
    }
    next();

判断如果没有登录并且当前不是登录页,才跳转到登录页

推荐问题