这是我的路由守卫:
router.beforeEach(async (to, from, next) => {
await store.dispatch('GetPermission');
if (to.matched.some(record => record.meta.requireAuth)) {
let permissions = store.state.permissions; //获取到的是空值
console.log(permissions);
if (permissions.filter(per => (per.name === 'read_list').length != 0)) {
next({
path: '/dashboard/create'
})
} else {
next()
}
} else {
next()
}
});
问题在于,尽管我在dispatch方法中使用了await,但我没有获取到最初为空的permissions的状态值 这是vuex store的代码:
GetPermission(context) {
axios.defaults.headers.common['Authorization'] = 'Bearer ' + context.state.token
axios.get('http://127.0.0.1:8000/api/user').then((response) => {
console.log(response)
context.commit('Permissions', response.data.permission)
})
}
//mutation:
Permissions(state, payload) {
state.permissions = payload
}
//state
state: {
error: '',
token: localStorage.getItem('token') || null,
permissions: '',
success: '',
isLoggedin: '',
LoggedUser: {}
}
请帮我解决这个问题,谢谢!
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号