我已经创建了一个全局身份验证中间件,但需要检查您是否要访问 /dashboard 中的任何路由及其子路由,例如 /dashboard/account 或 /dashboard/settings。
下面的中间件是我创建的一个非常简单的版本,但它看起来像这样:
export default defineNuxtRouteMiddleware((to, from) => {
const useAuth = useAuthStore()
//This only checks this one path
if (to.path == '/dashboard' && !useAuth.authenticated) {
console.log(to.path)
return navigateTo('/auth/login')
}
//Using wildcards doesn't check any paths at all.
if (to.path == '/dashboard/**' && !useAuth.authenticated) {
console.log(to.path)
return navigateTo('/auth/login')
}
})
我可以做什么来检查所有主路由及其子路由/嵌套路由?
to
变量是一个字符串,因此您可以使用所有 String 函数。您可以使用 regex search 进行非常具体的字符串匹配,但对于您的情况来说可能更简单的是 String.startsWith()
if (to.path.startsWith('/dashboard') && !useAuth.authenticated)