在网上搜索了很多资料也没发现特别有用的,MybatisPlus 有一个数据权限插件 一键启用 再配置一个 SQL 拼接器就可以了,感觉还是比较方便,jpa 这边没发现有对应的东西,听说老外用 jpa 用的比较多 为什么没有看到相关的讨论了,搜索了一下都是很多年前的回答了,有说用数据库的 ACL 原生实现的,这是主流做法吗?
1
nothingistrue 159 天前
那是业务逻辑层/领域模型/数据模型/真模型层的活,不是仅作为基础设施的 SpringDataJpa 该管的事。
|
2
129duckflew OP @nothingistrue Mybatis Plus 有一个数据权限插件 https://baomidou.com/plugins/data-permission/ ,如果希望用 Jpa 这个技术来实现类似的效果 可以从哪些角度考虑呢?
|
3
nothingistrue 159 天前
用 SQL ,或者数据查询去控制权限,老外,最起码也是近些年还能够宣传到中国的老外,是不会这么干的。
|
4
129duckflew OP @nothingistrue 那老外不会有类似的多租户或者数据权限的需求吗,他们一般用什么解决方案呢?
|
5
lybcyd 159 天前
数据权限属于鉴权,和数据访问层的实现应该是无关的。最好是单独实现一个 interceptor 或者切面,然后通过自定义注解之类的方式来实现。
|
6
KongLiu 159 天前
这种是权限问题了把,一般都是用拦截器做,怎么也轮不到一个 ORM 去做
|
7
wxw752 159 天前
Mybatis Plus 的插件也是 Interceptor ,你可能是想问问 jpa 那边有没有人做 JPA Plus ?
|
8
yidinghe 159 天前
没有通用的需求就没有通用的解决方案。比如说查订单,订单都在一张表里,而每个用户只能查自己的订单,这算不算行级权限控制?当然算。凡是有订单的系统,自然而然就把这个作为业务需求给实现了。
|
9
zjsxwc 159 天前
这权限问题,不单单,你 sql 层能解决。
业务逻辑层能解决(面向切面编程、中间件拦截处理)、 数据传输序列化层能解决( serializer 、dto )、 甚至页面展示渲染层也能解决 这么多途径方式,没必要纠结于拦截 sql 拼接来解决 |
10
129duckflew OP |
11
chuck1in 159 天前
op 公司用的 jpa 吗,挺少见的。
|
12
RandomJoke 159 天前
你要的可是 https://www.baeldung.com/hibernate-interceptor 这玩意?其实吧我感觉作用不大..原本好好的 ORM ,鬼知道一通操作把 SQL 改成啥样
|
13
Ethan9527 159 天前
之前用 Querydsl 做过,跟你说的这个数据权限插件思路差不多,拦截到权限数据之后动态增加过滤条件
|