该系统目前我正在工作上需要一些基于角色的安全,这是很好的照顾在Java EE堆。该系统打算要一个框架为业务领域专家撰写他们的代码顶上的.

然而,还需要对数据 security.那是什么样的信息是可见的一个最终用户。

这实际上意味着减少可见性的行(甚至列)的数据库。

我们使用的休眠于我们的持久性。然而,我们使用我们自己的注释,以便不让我们坚持选择对商业领域的专家。

行根据安全这意味着我们可以添加一个注如 @Secured 在实体一级,这将导致额外列要加入的基础表来约束我们的选择?

对于列基于安全,我们也许可以有 @Secured 要么协助查询的产生,或许使用的一个方面,以过滤器返回的信息?

我很好奇想知道这怎么可能会影响休眠的高速缓存机制以及吗?

我敢肯定有很多其他有同样的问题,我想知道如何接近这个吗?

多的理解...

有帮助吗?

解决方案

休眠有一个 过滤机制 可能对你的工作。过滤器将会改写查询休眠产生的包括一个附加条款来限制行返回。我不知道还有什么在休眠以掩盖或隐藏列。

你的数据库也可有支持这一功能。Oracle,例如,有的 虚拟私人数据库 (温哥华警察局),这将重写你的查询数据库的水平。这种解决方案具有的好处,任何外部程序(例如报告工具),这违反您的数据库将有你的安全限制强制执行。温哥华警察局还拥有支持以掩盖限制的列空。

不幸的是,上述解决方案都没有被充分支持安全要求的种类型的项目,我通常的工作。通常会有某种情况下,不能轻易表示,在上述解决方案。例如,用户可以查看数据,他们必须创建或已被标记为公开,或者属于一个项目,该项目,他们管理的。

我们通常建立查询/搜索/道的对象中,我们传递的价值观必须执行安全,然后建立的查询相应。

我希望这可以帮助

其他提示

当使用休眠的过滤器,你需要意识到所附加的限制将不适用于SQL statements generted由 load()get() 方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top