如何限制用户进入管理区域 vue 路由器守卫

时间:2021-05-24 20:56:36

标签: vuejs2 vuex vue-router

我写了一个代码,应该限制非用户访问用户和管理区域,并限制用户访问管理区域,第一部分有效,但第二部分没有。用户可以访问管理区域

这是我的代码:

router.beforeEach((to, from, next) => {
if (to.name !== 'loginregister.loginpage' && to.name !== 'index.index' && to.name !== 'products.index' && to.name !== 'products.show' && to.name !== 'order.checkout' && !store.state.userToken){
    next({ name: 'loginregister.loginpage' });
}

else if(store.state.isAdmin && to.name !== 'user.feed' && to.name !== 'user.workout' && to.name !== 'user.diet' && to.name !== 'products.index' && to.name !== 'products.show' && to.name !== 'order.checkout' && to.name !== 'order.summary' && to.name !== 'user.home'){
        next({ name: 'user.feed' });
    }
else next()

});

1 个答案:

答案 0 :(得分:0)

我把它改成了这个,现在可以用了

router.beforeEach((to, from, next) => {

if(!store.state.userToken){
    if (to.name !== 'loginregister.loginpage' && to.name !== 'index.index' && to.name !== 'products.index' && to.name !== 'products.show' && to.name !== 'order.checkout'){
        next({ name: 'loginregister.loginpage' });
    }
}

else if(store.state.userToken){

if(!store.state.isAdmin && to.name !== 'user.feed' && to.name !== 'user.workout' && to.name !== 'user.diet' && to.name !== 'products.index' && to.name !== 'products.show' && to.name !== 'order.checkout' && to.name !== 'order.summary' && to.name !== 'user.home'){
        next({ name: 'user.feed' });
    }
    else next()
}
next()
});