现在我项目用的方法
路由设计:路由表中会定义两个路由表,一个为公共路由表,一个为动态路由表。动态路由根据登录账户的权限去获取。取到权限后,根据roles中的字段,去遍历动态路由表中的对应的路由表。
最后将获取到的符合权限的路由,通过router.addRouter()合并到固定路由下面,,再用到router.beforeEach()去做路由判断,让权限更牢靠
常用方法
第一种
1.对路由跳转进行判断,如果符合权限就允许,反之就不行
2.对跳转页面进行逻辑请求判断,就是页面数据需要一定的权限才能发送请求(这样需要后端人员给你做,个人感觉不太现实,后端估计想干你)
3.根据权限,动态生成对应的路由,什么权限拥有什么路由(vue-element-admin)就是这么做的,动态生成路由
前端常用方法一般是: v-if + router.beforeEach()
由于后端管理界面涉及到,对登陆用户的权限判断,可能做的好点的后端管理页面,要么把相对应的跳转事件进行隐藏或判断,或者把跳转页面进行隐藏,我之前也是这样做的,对跳转的路由按钮进行 v-if 判断,然后再在router.beforeEach()进行路由判断,这样就可以防止部分用户,根据请求地址来实现跳转
第二种
对跳转的按钮事件进行权限判断
对跳转页面的路由事件,添加一个方法,然后根据权限判断,if和else,满足就跳转,不满足就return,如果想要提升一下用户体验度,就弹出一个消息提示框,说您暂无权限
但是呢,用户体验度不是很好,而且权限是写死的,不具备灵活性
第三种
根据权限动态生成路由
第一步:
就是在你登陆以后,后端返回token,然后在请求成功的回调里面,又发送token去后端去获取当前用户的详细信息,信息中包括了你这名用户的权限,是否为管理员身份,还是次级管理员身份,然后将token存入cookie,将请求获取到的数据存入vuex!假设这个存储你权限的字段交roles,是个数组,类似:[’admin’] or [‘Secondary’]
第二步:
这里要说明的是,路由表中会定义两个路由表,一个为公共路由表,一个为动态路由表,公共路由表就是不需要权限也能去访问,动态路由表顾名思义就是需要权限去获取了!然后根据获取到你的权限之后,会根据roles中的字段,去遍历动态路由表中的对应的路由表,然后将符合条件的路由表保存起来
第三步:最后将获取到的符合权限的路由,合并到固定路由下面,通过router.addRouter(),当然了这里还是要用到router.beforeEach()去做路由判断,让权限更牢靠一点
参考文献: