1

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

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

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

所以通常我们得到(多对多加入)

用户 -*UserRole*-Role -*RoleActions

在哪里

user.roleid =>角色.id

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

当许可证这样说时,我希望 JAAS 表现得像所有用户都是 roleid =1。

有任何想法吗 ?

4

2 回答 2

1

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

微不足道我可以

  1. 如果许可证过期,给一个只读用户(凭证是固定的)

  2. 如果许可证设置了只读能力位,则给只读用户(凭据是固定的)

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

于 2009-05-26T06:03:27.323 回答
0

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

User对象中,提供一个像getAuthenticatedRoles()这样的瞬态吸气剂会额外过滤Hibernate加载的内容。另外,制作原始映射集合 getter protected,并仅从getAuthenticatedRoles()其他 Java 代码中使用。

于 2009-03-25T09:43:52.187 回答