我有一个在 JBOSS 上运行的非常普通的 Java EE 应用程序。它使用 JBoss DatabaseLoginModule JAAS 身份验证。它在 Hibernate 中也有完全相同的应用层用户/角色。

我有一个想法(无论如何,我认为这对我来说非常有用),我可以在软件许可证对象(不使用休眠)中设置一个功能位,使所有用户成为只读用户。这让我可以通过重新许可来制作该产品的只读版本。

我想做的是根据程序内部可访问的布尔标志重新映射用户关联。

所以通常我们得到(多对多连接)

用户-*UserRole*-Role-*RoleActions

在哪里

用户.角色=>角色.id

当布尔值被设置时(软件许可证中设置的功能位)

当许可证如此规定时,我希望 JAAS 的行为就像所有用户都是 roleid =1 一样。

有任何想法吗 ?

有帮助吗?

解决方案

通过子类化 DatabaseServerLoginModule 我可以执行额外的检查。(在软件许可证上)

简单地说我可以

  1. 如果许可证已过期,请授予只读用户(凭据已修复)

  2. 如果许可证设置了只读功能位,请授予只读用户(凭据是固定的)

由于登录已被拦截,Hibernate 用户查找将针对正确的用户。

其他提示

也许我在这里错过了船,但为什么不这样做编程?

User目的,提供一个短暂的吸气剂像getAuthenticatedRoles()将附加过滤Hibernate加载什么。 Additonally,使原来的映射集合吸气protected,和其他Java代码只使用getAuthenticatedRoles()

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