前言
现在在公司以vue作为主导,之前的项目是老项目,用lay-UI做的权限设计,现在我想以vue重构下架构。
参阅了这个手摸手,带你用vue撸后台 系列二(登录权限篇),人家通过改变路由内部结构的匹配,来实现对权限的响应,也就是说他是将路由动态化,将一个新的routes对象与之匹配。
这个博主实现的代码取巧了,vue官网并没有这样的api介绍,完全是看vue-router源代码实现的解决办法。我不知道这样会不会造成内存的多余,可能是我多虑了。
官网只有追加路由,并没有路由的替换,这样对权限的设计有一定的影响。
我的思路
我的思路是先将所有的路由挂载上自己的vue程序之中,将权限信息保存在store中,暴露一个actionhasPermission
,然后用路由守卫访问该action判断该路由是否有权限的访问,或者控制跳转。
实现步骤:
- store维护一个权限数组,包括路由、跳转、可读写等信息的单个对象,其初始化为空
[]
。 - 设置一个action
hasPermission
,处理路由守卫传递进来的路由是否合法。 hasPermission
处理流程:判断权限数组是否为空?是,先异步获取当前用户可访问的权限数组(比如普通用户、游客),获取后,再进行判断路由是否合法。- 判断后,进行相应的放行或者
404
、403
、login
等等页面的跳转