想实现用户未登录时无法访问其他页面的功能,登录时将token存在localStorage中,在router.js中使用beforeEach来判断,判断localStorage中是否有token,如果有跳转到下一个页面中,如果没跳转到登录页面。
router.beforeEach((to, from, next) => {
if (localStorage.getItem("user_token")) {
next();
}
else {
next({
path: '/login'
})
}
})
结果页面是空白的,打开控制台发现出现了死循环
因为还没有登录,获取到本地存储的user_token为null,所以一直重定向到登录页面,出现了死循环。
修改代码,判断如果要到登录页面去,允许直接跳转,不会再重定向到登录页面
router.beforeEach((to, from, next) => {
if (localStorage.getItem("user_token")) {
next();
}
else {
if(to.path == "/login") {
next();
}
else {
next({
path: '/login'
})
}
}
})