【发布时间】:2021-01-01 17:58:50
【问题描述】:
我正在用 vue 开发一个网络,我意识到如果我把它放在控制台中
document.getElementById('app').__vue__.$router.push("some_route")
尽管我在 beforeEach 导航保护 (requireAuth) 中声明了元数据,但它仍然有效。 我需要创建一些随机用户无法访问的路由,在烧瓶中制作的 api 中,我返回一个令牌和一个角色,如果我尝试通过任何导航器中的地址栏访问,这工作正常但是当我通过控制台访问时不是,路由器在没有认证的情况下推送路由。
router.beforeEach(async (to, from, next) => {
if(to.matched.some(record => record.meta.requiresAuth)){
let user = JSON.parse(localStorage.getItem('user')) //user is a json with a jwt token
if (user && user.token){
await user_service.isLogged(to.path).then(response => {
//wait for a response from the server if the token is valid
switch (response.status){
case 200:
next()
break;
case 401:
next({path: '/login'})
break;
case 403:
next({path: '/403'})
break;
}
})
}else{
next({path: '/login'})
}
}
next()
})
感谢任何反馈。谢谢!
【问题讨论】:
-
如果这确实有效,那么您的导航保护可能有问题。如果您不显示代码,则无法为您提供帮助
-
是的!也许是这样,我觉得奇怪的是,如果我尝试像普通用户一样访问路由,使用按钮或更改地址栏中的 url 它工作正常!
-
已更新,感谢您的早日答复
-
您能否展示一个已验证和未验证路由的路由元属性示例
-
您能提供一个工作示例吗? (使用codesandbox.io)。
标签: javascript vue.js console vue-router