[TOC] ## 一、概述 * 该功能会有性能开销,并且会增加很多系统使用成本(大量的配置),所以要按需开启 * 一般有这种需求的系统都是后台管理类的2B系统,用户量和并发量并不大所以性能上的开销是可以接受的 ## 二、功能说明 总体包括以下几个部分 1. 资源/按钮权限配置 2. 角色关联权限 3. 前端页面按钮资源控制显示/隐藏 4. 后台接口url权限认证(如果对安全性要求不高可以去掉) > admin账号不受权限影响,能访问所有接口 ## 三、开启功能 该功能默认关闭,开启需要配置以下步骤 ### 1. 在网关添加url权限相关配置 ![](https://img.kancloud.cn/cd/6d/cd6d0075e0e116f810d45e55f6053e02_602x517.png) #### 1.1. 打开网关认证配置 `pigframe.security.auth.urlPermission.enable`设置为`true` #### 1.2. 配置只认证登录,登录后所有角色都能访问的url(可选项) `pigframe.security.auth.urlPermission.ignoreUrls` #### 1.3. 配置白名单/黑名单(可选项) `pigframe.security.auth.urlPermission.includeClientIds` `pigframe.security.auth.urlPermission.exclusiveClientIds` ### 2. 页面**菜单管理**配置权限 ![](https://img.kancloud.cn/6b/c6/6bc6f10025369a290b657da28f6378bf_1635x790.png) > 菜单url:请求后台的url > 菜单path:资源编码或者按钮id,用于前端页面控制元素**显示/隐藏** ![](https://img.kancloud.cn/fc/36/fc3642380a64cb8a4898c413e4fe5513_428x580.png) > 是否为菜单:选择否则为`按钮`类型 > 请求方法:请求后台接口的方法类型,如果不配置则该权限会对该url的所有方法都生效 ### 3. 页面**角色管理**关联权限 ![](https://img.kancloud.cn/f2/9a/f29ae48c4b454bd99b16325a3a5024e1_587x479.png) ### 4. 页面自己添加js动态根据权限控制隐藏的元素 ![](https://img.kancloud.cn/6f/a1/6fa17e1782d85e7674bbb665e97f8717_599x214.png) > admin.hasPerm方法为判断当前登录人所属`角色`是否具有该`权限` ## 四、缓存问题 目前的代码在根据多个角色编号查询资源/按钮权限的代码上增加了缓存配置(有效期5分钟),所以修改角色按钮权限后**并不会马上生效** ![](https://img.kancloud.cn/ca/86/ca86d38584b2bebd34eb30e46411f81e_885x305.png) > 如果需要马上生效则有3个方案 > > 1. 去掉缓存,每次都直接查询数据库(并发量不大的情况下) > 2. 手动删除redis的缓存(应急情况下) > 3. 页面增加刷新按钮,刷新/删除缓存数据(推荐)