1. 功能说明
注意:
- 该功能会有性能开销,并且会增加很多系统使用成本(大量的配置),所以要按需开启
- 一般有这种需求的系统都是后台管理类的2B系统,用户量和并发量并不大所以性能上的开销是可以接受的
总体包括以下几个部分:
- 资源/按钮权限配置
- 角色关联权限
- 前端页面按钮资源控制显示/隐藏
- 后台接口url权限认证(如果对安全性要求不高可以去掉)
2. 配置说明
2.1 开启关闭控制
该功能默认关闭,开启需要配置以下步骤:
2.1.1 在网关添加url权限相关配置
打开网关认证配置:
ylw.security.auth.urlPermission.enable设置为true
配置只认证登录,登录后所有角色都能访问的url(可选项):
ylw.security.auth.urlPermission.ignoreUrls
配置白名单/黑名单(可选项):
ylw.security.auth.urlPermission.includeClientIds
ylw.security.auth.urlPermission.exclusiveClientIds
2.1.2 页面菜单管理配置权限
菜单url:请求后台的url
菜单path:资源编码或者按钮id,用于前端页面控制元素显示/隐藏
2.1.3 页面角色管理关联权限
2.1.4 页面自己添加js动态根据权限控制隐藏的元素
admin.hasPerm
方法为判断当前登录人所属角色是否具有该权限
2.2 缓存问题
目前的代码在根据多个角色编号查询资源/按钮权限的代码上增加了缓存配置(有效期5分钟),所以修改角色按钮权限后并不会马上生效。
如果需要马上生效则有3个方案:
- 去掉缓存,每次都直接查询数据库(并发量不大的情况下)
- 手动删除redis的缓存(应急情况下)
- 页面增加刷新按钮,刷新/删除缓存数据(推荐)