jpa - 扩展 EntityManager 方法
问题描述
目前,我们的资源是基于静态角色访问的。管理员可以访问集群(JPA 组)实体。Employee可以访问其他 JPA 实体集群。JPA 实体到角色映射的列表在我们的应用程序中可用。在 JPA 事件 @PrePersist、@PreUpdate、@PreRemove 和 @PostLoad 期间,我们检查登录用户是否具有执行此活动所需的角色。
现在我们在这里需要基于属性的访问控制。这意味着具有Admin1角色的用户只能访问美国员工,而具有 Admin2 角色的用户可以访问美国和欧盟员工的详细信息。
我想要实现的是覆盖查询
Select * from MyTable
增强
Select * from MyTable where (in clause)
在我们的应用程序中进行此类更改将是一项巨大的活动。但是,是否可以对使用安全详细信息生成的 JPA 查询进行此类更改?
我们的 Spring Boot 应用程序使用Olingo OData 2进行所有用户交互,而不是 spring rest 控制器。对于 OData 查询,我们还使用查询侦听器,它为我们提供了可以使用ODataJPAQueryExtensionEntityListener增强的 JPA 查询。但是,在异步作业期间生成的查询以及不在 OData 上下文中的任何其他查询。我们想要一种统一的方法来增强来自中心位置的查询。
解决方案
推荐阅读
- angularjs - Bootstrap Tags Input error,Unable to set value of textbox using
- python - Django,在网页上显示python执行实时输出 - 作为控制台
- typescript - TS2322 类型“字符串”不可分配给类型“keyof T”
- android - TextInputLayout 内的 EditText 在顶部留下空白空间
- r - RJAGS 在约束协方差矩阵时无法找到合适的采样器
- c# - 按大小和位置检查项目
- python - Python-MySQL:如何在 Python 中的 2 个不同函数上共享或重用单个变量?
- android - 在firebase android中按值搜索时无法显示数据
- c - linux c脚本通过inode重命名文件
- audio - 使用 FFMPEG 一起检测没有音频的场景变化