创建中间件时如何包含路由的子级?

问题描述 投票:0回答:1

我已经创建了一个全局身份验证中间件,但需要检查您是否要访问 /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')
    }
})

我可以做什么来检查所有主路由及其子路由/嵌套路由?

vuejs3 nuxt.js vue-router nuxt3.js
1个回答
0
投票

to
变量是一个字符串,因此您可以使用所有 String 函数。您可以使用 regex search 进行非常具体的字符串匹配,但对于您的情况来说可能更简单的是 String.startsWith()

if (to.path.startsWith('/dashboard') && !useAuth.authenticated)
© www.soinside.com 2019 - 2024. All rights reserved.