## 使用步骤 ### 一、注解指定 1. 我们先测试一下上一章节的接口,发现调用返回成功 ![](../../images/screenshot_1563518928557.png) 2. 在接口上使用注解指定只能由user角色调用 ![](../../images/screenshot_1563518983254.png) 3. 重启工程后,再次调用发现已经返回未授权,因为当前调用的角色为`admin`,与`user`不匹配 ![](../../images/screenshot_1563519056515.png) 4. 修改授权代码,使`admin`或者`user`其中一个满足要求即可 ![](../../images/screenshot_1563519295303.png) 5. 重启工程后再次调用发现返回成功 ![](../../images/screenshot_1563519335537.png) 注:注解指定级别最高,直接规定了某些重要的敏感接口只能由固定的角色才能访问。但同时带来但问题是不够灵活,适用于不能被篡改,只能由管理员调用但接口配置。 ### 二、web动态配置 1. 打开web,进入`接口权限`模块,点击`权限配置` ![](../../images/screenshot_1563519582060.png) 2. 在弹出的界面点击新增按钮 ![](../../images/screenshot_1563523513230.png) 3. 填好对应的信息并保存(权限编号推荐使用冒号分割) ![](../../images/screenshot_1563524050127.png) 4. 发现一条配置已经出现 ![](../../images/screenshot_1563524216658.png) 5. 打开角色管理进行接口权限配置 ![](../../images/screenshot_1563524139515.png) 6. 给后端代码加上注解 ![](../../images/screenshot_1563524607045.png) 7. 重启工程后访问接口发现返回成功 ![](../../images/screenshot_1563524985622.png) 8. 我们尝试修改下code,然后不用重启,直接调用,发现请求未授权 ![](../../images/screenshot_1563525165481.png) ![](../../images/screenshot_1563525223055.png) 9. 如此一来我们便可以动态配置接口权限,从而来控制角色能访问的范围 ### 三、接口全局匹配 1. 可能看完以上两点,会有小伙伴觉得需要指定到对应到编号、角色才能进行授权。万一有一些不太确定的场景,需要实时变更,这种情况就不满足要求了。 2. 这种情况BladeX也有考虑到,对与这种情况,又结合整体系统的性能,提供了一个类下面的全局匹配功能,具体看如下 3. 在控制器类写上注解(两种皆可,选其一) ![](../../images/screenshot_1563525567553.png) ![](../../images/screenshot_1563525594816.png) 4. 重启工程后,访问list接口,发现请求未授权,因为并没有分配对应的接口权限 ![](../../images/screenshot_1563525906734.png) 5. 新增接口权限(**权限路径为controller的地址,根据这个匹配,匹配为包含关系。比如设置了/notice/list,那如果匹配到的接口地址是/notice/list/abc或者/abc/notice/list也是能校验通过的**) ![](../../images/screenshot_1563525965429.png) 6. 分配角色权限(**这里树形控件有个bug,当父级选中后,子节点默认没有选择,他也会给勾上。已经有人反馈,需要等官方修复,这时候我们再次点击下确定即可**) ![](../../images/screenshot_1563526026504.png) 7. 无需重启工程,再次访问发现接口返回成功 ![](../../images/screenshot_1563526215127.png) ### 四、结尾语 * 看到这里,相信大家对接口权限有了一个大概对认知,主要代码逻辑为如下两个类 ![](../../images/screenshot_1563526290754.png) * 大家可以进入AuthFun进行拓展@PreAuth的方法,将整个权限打造为自己公司专属的系统