Javascript Vue.js路由保护问题
我设置了一个路由守卫,检查路由是否为访客(登录和注册路由),是否为访客,用户是否经过身份验证,重定向到仪表板。然而,这有时有效,有时无效Javascript Vue.js路由保护问题,javascript,vue.js,vuejs2,vue-router,Javascript,Vue.js,Vuejs2,Vue Router,我设置了一个路由守卫,检查路由是否为访客(登录和注册路由),是否为访客,用户是否经过身份验证,重定向到仪表板。然而,这有时有效,有时无效 router.beforeEach((to,from,next)=>{ if (to.matched.some(record => record.meta.forGuests)) { if (auth.quickCheck()) { console.log('should redirect now'
router.beforeEach((to,from,next)=>{
if (to.matched.some(record => record.meta.forGuests)) {
if (auth.quickCheck()) {
console.log('should redirect now')
next({name:'dashboard'});
} else next()
}
next();
});
这是我的警卫。我总是收到console.log
消息,但由于某些原因,它并不总是重定向。当我更改“现场”路线时,就会发生此问题。Vue路由器正在接收它,但没有重定向它应该如何。。。
例如,这是我的登录路径
{
path: '/login',
name: 'login',
component: require('./views/Login.vue'),
meta:{
forGuests: true
}
},
这里的主要问题是它有时会起作用。例如,这是my console.log:
should redirect now
Component mounted.
should redirect now
在安装寄存器组件时,正在安装组件。正如您第一次看到的,当我更改为
/login
时,我得到了应该重定向和组件挂载(它确实重定向了我),而下一次我得到了应该重定向并保持在/login上,您说:当我更改路由“live”时,这个问题就发生了。。你这是什么意思?@user7814783在browserOK中更改路径现在我明白了。我也面临这个问题。当您直接在浏览器的搜索中搜索受保护的路径时,将重新呈现(刷新)vue应用程序。您正在使用auth.quickCheck()
检查用户是否经过身份验证。您正在将用户的身份验证状态保存为var
或object
,根据用户是否登录,将其保存为true
或false
。在浏览器搜索中直接搜索或路由时,存储用户身份验证状态的var
或对象被设置回初始状态,即false
。我建议您将用户的身份验证状态存储在cookie中。然后,您可以检查Cookie的值以确定用户是否登录。这样,您就不必担心页面刷新会将身份验证状态更改回false。@VAMSIKRISHNA是的,这就解决了问题。谢谢