## 前言 * 我们知道,一般的系统都离不开权限模块,它是支撑整个系统运行的基础模块。而根据项目类型和需求的不同,权限模块的设计更是大相径庭。但不管怎么变,权限模块从大的方面来说,可以分为三种大的类型:**功能权限**、**接口权限**、**数据权限**。 * 功能权限:也就是我们最熟悉的菜单、按钮权限。可以配置各个角色能看到的菜单、按钮从而从最表层分配好权限 * 接口权限:顾名思义,配置不通角色调用接口的权限。有些敏感接口,是只能有固定的一些角色才能调用,普通角色是不能调用的。这种情况需要有一个明确的系统来控制对应的访问权限 * 数据权限:是大家最为需求也是最广为谈资的一个设计理念。我们需要控制不通的角色、机构人员有查看不通数据范围的权限。如果你动手去设计数据权限,当你去各大平台、百度、谷歌查找设计思路的时候,你会发现很难找到有用的资料,很多设计思路局限性非常大。 * BladeX解决了这一类疑难问题,提供三种方式来实现数据权限,大家可以根据不通场景选择对应的方案。 1.提供代码层配置@DataAuth注解达到脱离数据库的全固定配置方式 ![](https://box.kancloud.cn/d312536d13339940761877ab42abddff_1090x344.png) ![](https://box.kancloud.cn/96b9397f05b605a39fdf5747dce8f58c_1656x332.png) 2.提供代码层配置@DataAuth注解配置**数据权限资源编码**来达到依赖数据库的半自动配置方式 ![](https://box.kancloud.cn/2a720656e44c86988b5d723cac3f641b_1048x98.png) 3.提供web界面在线配置,达到数据权限自动、动态生效的目的 ![](https://box.kancloud.cn/bb2c389984cf4d3f267091407c1aa405_3358x1806.png) ![](https://box.kancloud.cn/51892135b0709772d3bbce37e189128c_2180x1188.png) <br> <br> ## 注解说明 * 数据权限的核心注解为@DataAuth,我们来看一下他的构成 ![](https://box.kancloud.cn/59155e77dd9d5a9d4a859d25ed637d08_996x1100.png) * 纯注解我们只需要关注下面三个字段即可,当中的数据权限规则枚举类我们来看下构成 ![](https://box.kancloud.cn/7b703f81319e7b40e7a8ad88b2895e67_1000x940.png) * 可以看到,目前的数据权限类型一共有五种,前面四种都是不需要自定义写sql的,只有选择了CUSTOM类型,才需要定义注解的value属性 * 注解默认过滤的字段名为create_dept,如果有修改,则需要定义对应的字段名 <br> <br> ## 准备工作 * 因为涉及到数据权限字段,现在我们需要先升级系统至2.0.4.RELEASE以上,执行数据库脚本确保数据库和基础实体类有create_dept这个字段 ![](https://box.kancloud.cn/97f9b13496bd50aec1e09ce71c023d2b_1062x996.png) ![](https://box.kancloud.cn/015623036854897d8010e3d18176bf42_2826x212.png) * 为了测试方便,我们修改下create_user,create_dept对应的一些数据 ![](https://box.kancloud.cn/902d65f160a262497381c544ada5425a_2794x308.png) * 准备好了之后,我们开始学习如何开发数据权限