vue.js - 我可以一个接一个地使用多个相同的路由守卫吗?
问题描述
例如,
router.beforeEach((to, from, next) => {
...
...
})
router.beforeEach((to, from, next) => {
...
...
})
官方文档说:
每当触发导航时,按创建顺序调用守卫之前的全局。
在警卫在这里是复数之前。但是当我使用多个之前的守卫时,只有第一个被调用,而其他的被跳过。
问题不仅与 beforeEach 有关,还与所有导航守卫有关。
带有 2 beforeEach 的代码不起作用:
router.beforeEach((to, from, next) => {
if (to.name !== 'Logon' && !localStorage.getItem('authToken')) {
next({ name: 'Logon' })
} else next()
})
router.beforeEach((to, from, next) => {
if (to.name !== 'Logon' && localStorage.getItem('authToken')) {
next({ name: 'Homepage' }) //тут будет логика проверки токена на сервере
} else next()
})
解决方案
这目前不受支持,似乎也不会支持。线程中提到了一些解决方法,例如在单个警卫中调用多个警卫
推荐阅读
- c# - Excel 2016 到 Windows 窗体 Visual Studio 2019 社区中的 DataGridView
- c# - 无法加载文件或程序集“Microsoft.mshtml,版本=7.0.3300.0
- spring - 在另一个 bean 中使用来自一个 bean(组件)的方法是否正确?
- amazon-web-services - 在 S3 中访问数据的权限不足
- android - 使用 Android NDK 使用 clang++ 编译 C++ 代码时对“_Unwind_Resume”的未定义引用
- reactjs - 尝试实现全选/取消全选时,ANTD Select mode="multiple" 很慢
- php - MediaWiki 使用 liquipedia 皮肤的内部错误
- c++ - using 声明不能引用类成员
- r - 在R中计算TWI?
- ios - 在 iOS 13 中快速打开与 UiApplication 的链接