前端部分,这里基于vue-element-admin模板来演示,
vue-element-admin是一个后台前端解决方案,它基于vue和element-ui实现。
1. 安装 vue-element-admin
1 | # 克隆项目 |
2. 改造前端路由挂载方式
vue-element-admin中权限的实现方式是:通过获取当前用户的权限去比对路由表,生成当前用户具有的权限可访问的路由表,通过router.addRoutes
动态挂载到router
上。
这里改造得更灵活一点,后台根据用户计算出可访问得菜单列表,直接返回用户可访问得菜单列表,前端也需要保存一份全的路由表,用户登录后得到可访问菜单,匹配前端保存的路由表然后动态挂载。
用户登录成功之后,在全局钩子router.beforeEach
中拦截路由,判断是否已获得token
,在获得token
之后我们就要去获取用户的基本信息及可访问菜单,然后动态挂载路由。
1 | /** |
2.1 根据接口返回的菜单列表menus
动态挂载路由
接口返回菜单数据:
动态挂载路由:
1 | /** |
2.2 前端保存的全路径路由表
1 | /** |
源码地址:https://github.com/chaooo/spring-security-jwt.git,
这里我将本文的前后端分离后台菜单权限控制放在github源码tag的V4.0中,防止后续修改后代码对不上。