可参考 demo 模块的用法(需先导入
test.sql
文件)。
spel
语法,方便动态处理 Bean
。5.2.X
版本)。类名 | 描述 | 主要功能 |
---|---|---|
DataScopeType | 数据权限模板定义 | 用于定义数据权限的模板 |
DataPermission | 数据权限组注解 | 标注此注解开启数据权限过滤(默认按部门过滤) |
DataColumn | 数据权限字段注解 | 用于替换数据权限模板中的 key 变量 |
PlusDataPermissionInterceptor | 数据权限 SQL 拦截器 | 拦截 SQL 语句并检查是否启用了 DataPermission 注解 |
PlusDataPermissionHandler | 数据权限处理器 | 为拦截到的 SQL 添加数据权限过滤条件 |
DataPermissionHelper | 数据权限辅助工具 | 操作数据权限上下文 |
SysDataScopeService | 自定义 Bean 用于数据权限 | 处理自定义数据权限的扩展功能 |
@InterceptorIgnore(dataPermission = "true")
// 无返回值
DataPermissionHelper.ignore(() -> { 执行业务逻辑 });
// 有返回值
Class result = DataPermissionHelper.ignore(() -> { return 业务逻辑 });
数据权限体系结构为:用户 -> 多角色 -> 角色 -> 单数据权限
例如,用户A拥有两个角色:
– 角色A:部门经理,可以查看本部门及下属部门的数据。
– 角色B:兼职开发,只能查看自己的数据。
test1
,权限为本部门及下属部门:test2
,权限为仅本人:test
:在 Mapper 层使用数据权限注解,
dept_id
用于过滤部门字段,user_id
用于过滤用户字段。
如果方法中有自定义的实现,最终执行的
mapper
方法不是标注该方法的mapper
,则数据权限注解将不会生效。解决方法:找到实际执行的
mapper
并对其进行重写。
code
字段用于关联角色的数据权限。sqlTemplate
为 SQL 模板:
#{#deptName}
:模板变量,匹配权限注解的 key
。#{@sdss}
:调用 Bean 方法处理模板。elseSql
为兜底 SQL 处理:当角色没有匹配权限时,将其设置为 1 = 0
,以禁止数据访问。角色管理
中的 数据权限
下拉菜单中添加自定义模板。DataScopeType
自定义 SQL 模板。Execute SQL: SELECT * FROM test_demo WHERE (test_key LIKE '%测试数据%') LIMIT 10
规则:方法级注解优先于类级注解。类级别标注后,所有方法(包括继承自父类的方法)都会进行数据权限过滤。
powered by kaifamiao