【发布时间】:2019-06-03 02:06:07
【问题描述】:
我在 vue-router 中保护了一些路由,这是通过 vue-router 中路由的元属性来实现的。
当我加载索引路由时,即所有记录都向我显示编辑按钮,因为那时我拥有此权限,如果我更新该用户,我会使用管理员用户转到另一个面板并删除所述权限.现在我转到普通用户并在我的表格的编辑按钮中给出,我应该将我发送到路线 403,因为我当时没有该权限,但它没有,只是到下一个导航到另一条路线我更新了权限。我该如何解决?
router.beforeEach((to, from, next) => {
store.dispatch('ME'); // get permissions before navigate route
if (to.matched.some(record => record.meta.permission_name)) {
// I check if the route permits, otherwise send to route 403
if(!store.getters.containsPermission(to.meta.permission_name)){
next({name : '403'})
}
else{
next()
}
}
else{
next()
}
})
权限位于后端的数据库中,我使用 Laravel 和 Laravel 权限,通过从另一个管理员用户修改该用户的权限,并执行 store.dispatch('ME'); 我获得了新权限,我认为通过调用在评估元数据之前调度,它将正确到达next({'403'});
希望你理解我,如果不理解,请不要犹豫。
【问题讨论】:
-
您的问题标题似乎与实际问题不符。如果您可以使其更合适,您将获得更好的响应
-
您要么需要不断检查更新的用户权限,要么以某种方式将它们推送到您的应用程序(websockets 等)。当您说“如果我更新该用户” 时,这是什么意思?数据存储在哪里?
-
@Phil 我试图更好地关注标题,但问题是否得到理解?是否假设如果我在验证目标之前获得更新的权限,它会起作用吗?
标签: vue.js vuex vue-router