所以我试图在用户访问路线之前检查他们的权限。我尝试使用 route.beforeEach
和 route.beforeResolve
。如果选项卡中的 localStorage 已加载,它可以完美运行,但是如果我尝试访问新选项卡中的路由,它会返回 404,这意味着用户没有权限。工作流程是这样的:
当前:
预期:
代码如下:
router.beforeEach((to: any, from: any, next: any) => {
let permission: any = localStorage.getItem(`${process.env.NODE_ENV}_user_role_permission`);
permission = permission ? JSON.parse(permission) : [];
console.log(permission);
if (!(to.meta.permission === permission)) {
next("/not-found");
return;
}
next();
});
问题是,当我尝试在新选项卡上访问它时,console.log(permission)
将返回 null,但是当我从该 404 页面访问它时,我将能够导航。路由器有没有可能先于localStorage运行?
答案 0 :(得分:0)
我解决这个问题的方法是调用我的api加载权限并保存到localStorage,流程是这样的: