0

我正在构建一个 Nuxt 应用程序并尝试创建一个路由守卫。如何访问$can我的 Nuxt 中间件?

export default (context) => {
    const { route } = context
    route.matched.some((routeRecord) => {
        const options = routeRecord.components.default.options
        console.log(options)
        // should use $can here
        return true
    })
}

我在我的导入以下nuxt.config.js

plugins: [
    { src: '@plugins/vue-can.js' },
]

casl在 Nuxt $auth 模块上添加插件:

auth: {
    plugins: [
         '@plugins/vue-casl.js',
    ]
}

这是因为我需要$auth.user在我的插件中访问。

所有这一切都很好,除了我找不到$abilities$can在我的 Nuxt 中间件中。


PS:我说的是这个包:@casl/vue

4

1 回答 1

1

$abilities并且$can两者都应该可以作为context中间件中对象的属性使用,因此您应该能够使用context.$foo.

如果您没有看到它,可能是因为它没有正确注入。您注册的插件nuxt.config.js应该用于inject添加$can到全局 vue 实例并使其作为thisand的属性可用context。有关更多详细信息,请参阅文档:https ://nuxtjs.org/docs/2.x/directory-structure/plugins/#inject-in-root--context

于 2021-03-30T08:30:49.650 回答