gpt4 book ai didi

java - 基于 DSL 的数据过滤

转载 作者:行者123 更新时间:2023-12-04 06:01:06 25 4
gpt4 key购买 nike

我们的产品是特定于域的产品。以下是一些典型的安全用例,

  • 普通用户只能编辑他的个人资料数据或基于许可的任何数据
  • 一个用户只能看到属于他部门的数据,而另一个用户可以看到所有部门的数据

  • 这些需求因客户而异,因此我们不能只是在我们的应用程序代码中硬编码过滤逻辑或维护应用程序的多个版本。

    我们使用基于 Hibernate 标准的过滤,并喜欢根据与权限相关的一些表达式添加额外的限制。上面提到的用例 1 的表达式可能如下所示, 'userId=user.userId'其中“user”是一个关键字,表示当前经过身份验证的用户,“userId”是为其创建条件的对象的属性。

    我们想定义一个 dsl,使用它我们可以导出条件限制以及 sql 的“where”子句。

    是否有任何现有的框架可以让我们在不使用 dsl 的情况下做到这一点?基于上面提到的用例,您认为可以通过不同的方式实现吗?

    附加信息:我们仅定义具有一些元信息的域对象来生成 UI。我们的核心框架负责持久性、安全性等。

    最佳答案

    您是否测试过 Hibernate 过滤器?
    它们是记录级别过滤的绝佳机制,您可以在每个实体上定义多个过滤器(例如针对您的案例的两个过滤器),并根据当前用户启用或禁用它们。
    应该提到过滤器可以接受参数(例如您当前的用户 ID)。

    我们已经在一个大型项目中使用了 Hibernate 3 的这个强大功能,它有一个分层的组织单元并且工作得很好。

    顺便说一下,如果您使用 Oracle 作为数据库,请考虑 Oracle 的虚拟专用数据库功能。

    关于java - 基于 DSL 的数据过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8891290/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com