[英]CASL Vue - How to access $can in route guard
我正在構建一個 Nuxt 應用程序並嘗試創建一個路由守衛。 如何在我的 Nuxt 中間件中訪問$can
?
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' },
]
我在 Nuxt $auth 模塊上添加casl
作為插件:
auth: {
plugins: [
'@plugins/vue-casl.js',
]
}
這是因為我需要在我的插件中訪問$auth.user
。
所有這些都很好,除了我在 Nuxt 中間件中找不到$abilities
或$can
。
PS:我說的是這個package: @casl/vue
$abilities
和$can
應該都可以作為中間件中context
object 的屬性使用,因此您應該能夠使用context.$foo
訪問它們。
如果您沒有看到它,可能是因為它沒有正確注入。 您在nuxt.config.js
中注冊的插件應該使用inject
將$can
添加到全局 vue 實例並使其作為this
和context
的屬性可用。 有關詳細信息,請參閱文檔: https://nuxtjs.org/docs/2.x/directory-structure/plugins/#inject-in-root--context
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.