[英]Nuxt.js's meta property in layout file is not work in middleware
Nuxt.js 在布局文件中的元屬性不起作用。
我想創建一個判斷用戶角色滿足布局角色的中間件。
所以,我寫布局組件。 這包括允許的角色( roles
)。它在下面。
layout/default.vue
<template>
<v-app class="primary">
<v-content>
<nuxt />
</v-content>
</v-app>
</template>
<script>
export default {
middleware: ['authorized'],
meta: {
roles: ['driver']
},
}
</script>
我也寫頁面組件。
pages/sample.vue
<template>
<div>hoge</div>
</template>
<script>
export default {
layout: 'default.layout',
data() {
return {}
}
}
</script>
我也寫中間件。 它在下面。
middleware/authorized.js
export default async function({ redirect, store, route}) {
let userInfo = null
userInfo = await store.getters['auth/userInfoObject']
// Search metaData that has meta property.
const metaDataIncludeRole = route.meta.filter(metaObject => {
return 'roles' in metaObject
})
// Judge user's role includes it.
const isAllowed = metaDataIncludeRole[0].roles.some(role => {
return role === userInfo.roleType
})
if (!isAllowed) {
// Redirect any
}
}
但是在中間件中,
route.meta
在下面。
Array []
為什么不包括角色屬性? 請告訴我。
用於參考的網址如下
從任何組件或布局:
this.$nuxt.$options.context.route.meta;
抱歉。
布局文件中似乎不能使用元屬性。
我從以下 PR 中確認。
僅來自頁面,進入 $route.meta 數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.