sai*_*sud 3 navigation middleware nuxt.js vuejs3 nuxt3
export default defineNuxtRouteMiddleware(async(to, from) => {
const loggedIn = useState('loggedIn', () => false)
if(loggedIn.value == false) {
if(to.path == '/auth/login') {
await navigateTo(to.path)
}else if(to.path == '/') {
await navigateTo('/auth/login')
}else if(!(to.path == '/auth/login') or !(to.path == '/')) {
//return abortNavigation()
await navigateTo('/auth/login')
}else {
return abortNavigation()
}
}else {
console.log('to:', to.path)
console.log('from:', from.path)
await navigateTo(to.path)
}
})
Run Code Online (Sandbox Code Playgroud)
如果我浏览到以下几行,问题是"await navigateTo('/auth/login')"上面的代码不起作用".../dashboard",但当任何页面至少有一个"await navigateTo('/dashboard')". 它也适用于"return abortNavigation"
---
"else if(!(to.path == '/auth/login') or !(to.path == '/')) {
await navigateTo('/auth/login')
}"
---
Run Code Online (Sandbox Code Playgroud)
"await navigateTo('/dashboard')"但我希望无需从任何页面第一次调用它就可以工作。
小智 5
尝试在调用navigateTo时使用return而不是await,您可以在文档中找到一个示例: https: //nuxt.com/docs/api/utils/navigate-to。
export default defineNuxtRouteMiddleware((to, from) => {
// setting the redirect code to '301 Moved Permanently'
return navigateTo('/search', { redirectCode: 301 })
})
Run Code Online (Sandbox Code Playgroud)
如果您在中间件内部调用一个在出现错误时重定向用户的函数,请确保将 navigatorTo 返回给中间件调用方。
| 归档时间: |
|
| 查看次数: |
7191 次 |
| 最近记录: |