美文网首页
[Vue.js]router.beforeEach做登陆验证

[Vue.js]router.beforeEach做登陆验证

作者: 咸鱼菠菜 | 来源:发表于2017-03-16 11:59 被阅读0次

    在做一个登陆功能的时候遇到的一个小问题。需求是用户没有登录的时候打开其他页面都是跳转到登录页面,登陆之后则可以正常使用。查vue-router的文档,发现使用beforeEach可以实现功能,于是尝试着写了一下:

    router.beforeEach((to, from, next) => {
        // 模拟登陆状态
        let isLogin = false;
        if (!isLogin) {
            next({path: '/login'});
        }else {
            next();
        }
    });
    
    

    发现报错:

    报错

    大概意思是溢出了,也就是说每次到next又会再次进入beforeEach,所以进入了死循环。

    改造如下:

    router.beforeEach((to, from, next) => {
        // 模拟登陆状态
        let isLogin = false;
        if (!isLogin) {
            if (to.path !== '/login') {
                return next({path: '/login'});
            }else {
                next();
            }
        }else {
            if (to.path === '/login') {
                return next({path: '/'});
            }
            next();
        }
    });
    

    然后就正常了~

    相关文章

      网友评论

          本文标题:[Vue.js]router.beforeEach做登陆验证

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