当前位置: 首页 > Web前端 > vue.js

[Vue]安排导航守卫获取用户信息

时间:2023-04-01 11:15:51 vue.js

需要。管理员在工作中遇到需要配置角色菜单:假设用户登录系统后,有一个系统管理模块,点击系统管理默认是角色管理菜单。.但是要求管理员以外的用户不显示角色管理菜单。管理员通过设置传给后台的值中没有包含角色管理(设置后台路由,取消其他用户的角色管理菜单)。此时其他用户登录进入系统管理模块后,不显示角色管理菜单,内容仍然是角色管理页面(因为默认位置是角色管理);这时候前端需要对路由进行限制,这就需要使用守卫。守卫的作用是将管理员用户定位到角色管理页面,其他用户定位到其他页面。实现过程中遇到了一些问题:1.考虑选择哪个守卫(全局,路由独占)2.如何判断当前用户是否是管理员用户3.如何获取用户信息一开始我总觉得它没有必要添加全局守卫,然后尝试使用路由守卫来做到这一点。由于项目在vuex中存储了用户信息,尝试在路由独占守卫中使用$store获取,结果获取不到。然后用globalguard用同样的方法获取用户信息,还是不行。然后我在网上搜索了解决方案。于是,先给vue实例起个变量名,这样在guard中就可以访问了。然后在vue实例中通过$store获取用户信息。代码如下:main.js:router.beforeEach((to,from,next)=>{if(to.path==="/system/base/role"){if(vue.$store.state.userInfo.roleInfoList[0].roleCode!=="admin"){~~~~next({path:"/system/target/std"})}}next()})letvue=newVue({router,store,render:(h)=>h(App),}).$mount("#app");保持愚蠢,保持饥饿。