## web可视化动态配置
* 数据权限动态配置需要依赖数据库,所以我们需要前往web端进行配置
* 配置逻辑与纯注解配置一致,其实就是把注解配置拓展,并做成了web可视化
* 下面我们来打开web工程,进行操作把~
### Web配置
1. 打开saber,进入`数据权限`,点击`通知公告`模块的`数据权限`按钮
![](https://box.kancloud.cn/ccddac490f3349ccae3482f70a85f7dc_3354x1600.png)
2. 在弹层点击新增按钮
![](https://box.kancloud.cn/67844808902770616530872d1db4a2ac_3358x1540.png)
3. 填入对应的参数
![](https://box.kancloud.cn/523c022213907edec32ce9e376229b5b_1806x1176.png)
4. 这里有一点注意的是`权限类名`字段,之所以可以实现自动配置,就是因为我们指定了Mapper层对应执行的方法。所以我们对应的路径需要指定正确,不能出错。
5. 还有一点需要注意的是,若分页、列表方法不是自己写的mapper,而是采用的mybatis-plus自动生成的方法,没有自定义的方法名,那这个路径应该如何写?
6. 其实很简单,我们跟踪下代码,可以看到,自带的page方法,其实是调用了BaseMapper里的selectPage方法,而selectPage又调用了selectList
![](https://box.kancloud.cn/0870270e51e9fa6195f207a3afeb32e1_2022x506.png)
![](https://img.kancloud.cn/76/cc/76ccd7a331110cbabe73ee9a8d8346af_2438x918.png)
7. 所以我们如果需要配置自动生成的mapper方法,只需要把刚刚的`org.springblade.modules.desk.mapper.NoticeMapper.selectNoticePage` 改成`org.springblade.modules.desk.mapper.NoticeMapper.selectList`即可
8. 确认无误后,保存配置,可以看到在通知公告模块下,多了一条数据权限的配置
![](https://box.kancloud.cn/a880aee1c70cb93c39861621761820eb_3358x1546.png)
9. 那么下面,我们就需要对其分配权限了,打开`角色管理`的`权限配置`进行分配
![](https://box.kancloud.cn/924c2d3d3fc145c883429e496d87ea74_2002x1018.png)
10. 这里有一点需要注意,我们之前在菜单模块下进行了数据权限规则的新增,在角色权限配置的时候,可以看到归类在了对应的菜单下。这一点仅仅只是分类的作用,并没有实质性的影响。比如我可以配置生效的方法是`org.springblade.modules.desk.mapper.NoticeMapper.selectNoticePage` ,却把它放在了工作流的菜单分类下。实际生效的还是通知公告对应的这个方法,而不会对工作流菜单下的方法产生影响。
### 接口调用
1. 删掉上一章的DataAuth注解
![](https://box.kancloud.cn/26cc7433402aa088e1b1a2da650cc4f4_1212x1020.png)
2. 重启工程并调用postman,可以看到返回了3条数据
![](https://box.kancloud.cn/d2c971dc9fb11a597cd9eb45c5c4b057_1278x1670.png)
3. 查看控制台发现sql过滤条件生成成功
![](https://box.kancloud.cn/29bbed6855aa40610be9c3aa828234bb_1230x212.png)
4. 修改刚刚的规则,改为自定义并填入自定义sql
![](https://box.kancloud.cn/1b53bf70190dbedf25da295f87955f2e_1852x1234.png)
5. 无需重启工程,直接再次调用postman,发现这回返回了两条数据
![](https://box.kancloud.cn/b8db94edea9ff394133d9ddb24a4a477_1074x1664.png)
6. 控制台的sql过滤条件生成成功
![](https://box.kancloud.cn/b2c913c1f0ad6b49fee792b25653ce12_1452x176.png)
7. 此时我们将类名修改为通知功能列表页会调用的自带mapper方法(page方法底层为selectList)
![](https://img.kancloud.cn/70/4f/704f0422fee63db3370c39a4c834b5a5_1820x1196.png)
8. 不用重启,直接访问通知公告模块,发现显示了两条数据
![](https://box.kancloud.cn/f6e5b443aca7471e9359817727458bed_2942x944.png)
9. 控制台打印条件正确
![](https://box.kancloud.cn/d4b8c1214093d2559dd85a9ba382a053_3592x200.png)
![](https://box.kancloud.cn/f507f3490c7275de2a5b3b3a6800bffb_1524x382.png)
## 注
* 纯注解和web全自动的配置方式两者结合,相信可以满足绝大多数需求
* 对于国内一些特别复杂的需求,无法用配置实现的话,我推荐大家直接写死在代码内,否则这是一条不归路,一旦踏上,再也无法回头~
- 第零章 序
- 序言
- 系统架构
- 视频公开课
- 开源版介绍
- 商业版介绍
- 功能对比
- 答疑流程
- 第一章 快速开始
- 升级必看
- 环境要求
- 环境准备
- 基础环境安装
- 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多租户
- 概念
- 系统升级
- 如何使用
- 多终端令牌认证
- 概念
- 系统升级
- 使用
- 第三方系统登录
- 概念说明
- 对接说明
- 对接准备
- 配置说明
- 操作流程
- 后记
- UReport2报表
- 报表简介
- 对接配置
- 报表后记
- 动态数据权限
- 数据权限简介
- 数据权限开发
- 纯注解配置
- Web全自动配置
- 注解半自动配置
- 数据权限注意点
- 动态接口权限
- 乐观锁配置
- 统一服务登陆配置
- Skywalking追踪监控
- Minio分布式对象存储
- Boot版本对接至Cloud
- 第六章 生产部署
- windows部署
- linux部署
- jar部署
- docker部署
- java环境安装
- mysql安装
- docker安装
- docker-compose安装
- harbor安装
- 部署步骤
- 宝塔部署
- 准备工作
- 安装工作
- 部署准备
- 部署后端
- 部署前端
- 部署域名
- 结束工作
- k8s平台部署
- 第七章 版本控制
- Git远程分支合并
- Git地址更换
- 第八章 学习资料
- 第九章 FAQ
- 第十章 联系我们