我有一个基于userTp
值的导航卫士,它们可以正常工作,但是,每当用户重新加载页面时,它就会将其重定向到name: 'login'
。
我想防止刷新时更改路由。有没有在导航卫士内执行此操作的简单方法?
router.beforeEach(async (to, from, next) => {
if (to.meta.requireAuth) {
if (!store.state.auth.user) {
await store.dispatch(AUTH_REFRESH)
}
if (to.meta.userTp === store.state.auth.user.userTp) {
next()
window.scrollTo(0, 0)
} else {
next({ name: 'login' })
window.scrollTo(0, 0)
}
} else {
next()
window.scrollTo(0, 0)
}
})
编辑:
我为此找到了一种半解决方法,但这并不完美。它允许用户在知道正确的页面URL路径的情况下访问页面,但是由于我的设置在发送数据之前进行了服务器端userTp检查,因此它仅显示页面模板,但其中没有任何数据。
我的临时解决方案: (添加为第一个if语句)
router.beforeEach(async (to, from, next) => {
if (to = from) {
if (!store.state.auth.user) {
await store.dispatch(AUTH_REFRESH)
to()
}
}