## 前言
* 我们知道,一般的系统都离不开权限模块,它是支撑整个系统运行的基础模块。而根据项目类型和需求的不同,权限模块的设计更是大相径庭。但不管怎么变,权限模块从大的方面来说,可以分为三种大的类型:**功能权限**、**接口权限**、**数据权限**。
* 功能权限:也就是我们最熟悉的菜单、按钮权限。可以配置各个角色能看到的菜单、按钮从而从最表层分配好权限
* 接口权限:顾名思义,配置不同角色调用接口的权限。有些敏感接口,是只能有固定的一些角色才能调用,普通角色是不能调用的。这种情况需要有一个明确的系统来控制对应的访问权限
* 数据权限:是大家最为需求也是最广为谈资的一个设计理念。我们需要控制不通的角色、机构人员有查看不通数据范围的权限。如果你动手去设计数据权限,当你去各大平台、百度、谷歌查找设计思路的时候,你会发现很难找到有用的资料,很多设计思路局限性非常大。
* 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)
* 准备好了之后,我们开始学习如何开发数据权限
- 第零章 序
- 序言
- 系统架构
- 视频公开课
- 开源版介绍
- 商业版介绍
- 功能对比
- 答疑流程
- 第一章 快速开始
- 升级必看
- 环境要求
- 环境准备
- 基础环境安装
- Docker安装基础服务
- Nacos安装
- Sentinel安装
- 插件安装
- 建数据库
- 工程导入
- 导入Cloud版本
- 导入Nacos配置
- 导入Boot版本
- 工程运行
- 运行Cloud版本
- 运行Boot版本
- 工程测试
- 测试Cloud版本
- 测试Boot版本
- 第二章 技术基础
- Java
- Lambda
- Lambda 受检异常处理
- Stream 简介
- Stream API 一览
- Stream API (上)
- Stream API (下)
- Optional 干掉空指针
- 函数式接口
- 新的日期 API
- Lombok
- SpringMVC
- Swagger
- Mybatis
- Mybatis-Plus
- 开发规范
- 第三章 开发初探
- 新建微服务工程
- 第一个API
- API鉴权
- API响应结果
- Redis缓存
- 第一个CRUD
- 建表
- 建Entity
- 建Service和Mapper
- 新增 API
- 修改 API
- 删除 API
- 查询 API
- 单条数据
- 多条数据
- 分页
- 微服务远程调用
- 声明式服务调用 Feign
- 熔断机制 Hystrix
- 第四章 开发进阶
- 聚合文档
- 鉴权配置
- 跨域处理
- Xss防注入
- 自定义启动器
- Secure安全框架
- Token认证简介
- Token认证配置
- PreAuth注解配置
- Token认证实战
- Token认证加密
- 日志系统
- 原理解析
- 功能调用
- Seata分布式事务
- 简介
- 编译包启动
- 配置nacos对接
- docker启动
- 对接微服务
- 代码生成配置
- 前言
- 数据库建表
- 代码生成
- 前端配置
- 优化效果
- 第五章 功能特性
- SaaS多租户
- 概念
- 数据隔离配置
- 线程环境自定义租户ID
- 多终端令牌认证
- 概念
- 系统升级
- 使用
- 第三方系统登录
- 概念说明
- 对接说明
- 对接准备
- 配置说明
- 操作流程
- 后记
- UReport2报表
- 报表简介
- 对接配置
- 报表后记
- 动态数据权限
- 数据权限简介
- 数据权限开发
- 纯注解配置
- Web全自动配置
- 注解半自动配置
- 数据权限注意点
- 动态接口权限
- 乐观锁配置
- 统一服务登陆配置
- Skywalking追踪监控
- Minio分布式对象存储
- Boot版本对接至Cloud
- 第六章 生产部署
- windows部署
- linux部署
- jar部署
- docker部署
- java环境安装
- mysql安装
- docker安装
- docker-compose安装
- harbor安装
- 部署步骤
- 宝塔部署
- 准备工作
- 安装工作
- 部署准备
- 部署后端
- 部署前端
- 部署域名
- 结束工作
- k8s平台部署
- 第七章 版本控制
- Git远程分支合并
- Git地址更换
- 第八章 学习资料
- 第九章 FAQ
- 第十章 联系我们