事情
其实在我们前端看来说白了「就是显示了什么页面,显现了什么操作按钮」。cookie
是否存有token
,如果没有则会进入到登录页进行登录获取token
和权限等信息。router.addRoutes
添加路由,并把这些信息存储在vuex
里面,我们的tabbar
侧边栏等可以根据这些信息来控制样式又或者是显示隐藏。router.addRoutes
添加路由,那我们的「路由表」其实根据不同的项目也有不同的存放方法。router.js
把所有可能用到的路由都先定义好:/** router.js **/
export let Routes = [{
path: '/',
redirect: '/home/index'
},
{
path: '/home',
component: layout,
redirect: '/home/index',
meta: { roles: 'home' },
children:[
...
]
}
]
meta
路由元信息来代表这个路由所需要的权限,通过每个路由的meta
与权限表进行匹配。router.addRoutes
的路由。router.js
里面每一个页面所需要的权限做匹配,最后返回一个该用户能够访问路由有哪些。布局页面
、404页面
:// 前端未找到页面路由
const notFoundRouter = {
path: '*',
redirect: '/404',
hidden: true
}
// 根级菜单
const rootRouter = {
key: '',
name: 'index',
path: '',
component: 'BasicLayout',
redirect: '/index',
meta: {
title: ''
},
children: []
}
token
等方法向后端请求路由接口,这时候一般会返回一个路由json
,因为我们的路由表是个对象,所以我们需要在前端进行处理对最终的路由表进行拼接。router.addRoutes
的路由。路由json
我们进行拼接添加到项目路由中,而这些都是动态的。好了现在我们知道了一个动态权限路由模块也就是通过权限表
+ 路由表
来实现。
所以我们只需要搞清楚「两个要素」即可,当前「角色权限(权限表)」,和「完整路由表」。角色权限正常来说都是由后端返回,无非就是完整路由表放在哪的问题,我上面也说了路由表的两种组装方式,根据项目的需求来选择适合自己的方式即可。
我们把逻辑都捋了一遍之后,假如以后有人问起你的「权限路由是怎么做的」,你可以这样自信的回答:
在不同的项目中会有不同的处理方式,而最主要的是有两个要素「角色权限(权限表)」 和 「完整路由表」。
「权限」毫无疑问是通过接口后端返回的,而无非就是「路由表放在哪而已」。
而我「这边项目的逻辑」是,「路由表和权限表」都在管理后台添加编辑。登陆后,后端返回该角色的「权限列表和路由表」,然后根据这个数据构建路由和菜单。
这样自信的说完就足够了,记得不用说太多,因为他会「追问细节」,接下来只需要回忆我上面的「几张图」就可以啦~
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8