【数据权限控制】#提问# Java ...的全部评论

【数据权限控制】#提问# Java ...的全部评论
4个评论

首先我的理解是,部门表一般跟用户表关联。如果你的文档表中有记录用户标识的话,这样就可以把文档表与用户表关联,然后根据当前登录用户的id查询出对应的部门id,然后通过部门id去查询。但是这个需要改sql。

2023-12-19
安安
安安
等级作者
:
我没有去试过,那这样实现话,每个 sql 就要 or 几十个用户 id 或 一百多个,这样查的速度不会非常慢吗?
2023-12-19
鱼友0412
没太理解你的需求,我以为的是你文档表中每条数据对应一个具体的用户,这样做inner关联就好了
2023-12-19

如果你不想改sql的话,用aop去做。那就是先获取当前登录用户的部门,然后再通过部门把该部门下的所有用户标识查出来,再去通过用户标识筛选返回的数据,再返回给前端。

2023-12-19

首先明确你的查询需求,比如用户要传递部门 id 参数查询?还是直接根据登录 session 获取用户所在的部门?这完全是两个接口。

最好不要涉及到 SQL 的动态调整,建议查询前先做校验,如果查的不是本部门的数据,直接拒绝

2023-12-19
安安
安安
等级作者
:
我用的 Security ,我们公司有几十个文档表。需求是以可以设置查询所有,部门及以下,本部门。我的想法是给每个文档表都加上部门 id。然后使用aop拦截接口,获取用户的部门,sql 拼接上 where 。不知道这样会不会有点笨
2023-12-19

对于数据权限控制,常见的一种实现方式是在数据库表中加入部门ID字段,并在查询数据时通过AOP拦截来拼接SQL,限制只能查询本部门的数据。这种方式确实是一种常见的实现方式,但不是唯一的方式。

如果你有多个表需要进行数据权限控制,可以按照以下几种方式实现:

  1. 在每个表中都添加部门ID字段:这种方式确实是比较简单粗暴的方式,但在数据表较多时可能会增加维护的难度。如果不同表的部门ID字段名称相同,可以通过动态拼接SQL的方式来统一进行数据权限控制。...
2023-12-19
下载 APP