2

A 部分:角色与角色组

有人可以解释jboss DatabaseServerLoginModule中RoleRoleGroup之间的区别吗?查看JBoss 6 文档中的示例后,我感到很困惑

一个令人困惑的地方是当他们描述逻辑表时,用户到角色的映射表有三列:

Table Principals(PrincipalID text, Password text)
Table Roles(PrincipalID text, Role text, RoleGroup text)

但他们提供的示例仅使用两列:

CREATE TABLE Users(username VARCHAR(64) PRIMARY KEY, passwd VARCHAR(64))
CREATE TABLE UserRoles(username VARCHAR(64), userRoles VARCHAR(32))

这两列是错字还是我可以使用两列用户到我更熟悉的角色映射表以及从单个源列 userRoles 创建两列的查询,现在角色和角色组现在对于这个应用程序是相同的.

顺便说一句 - 在Glassfish 3和早期jBoss3中的传统 jdbcRealm 身份验证中,它是一个简单的一对多关系,并且有一个 user_group 表,其中用户名映射到组名。

B 部分:角色查询

此查询是否需要修改:

select userRoles, 'Roles' from UserRoles where username=?

对此:

select userRoles, userRoles as 'Roles' from UserRoles where username=?

为了在 UserRoles 表上运行,还是可以按原样运行?

C 部分:映射 web.xml

在 web.xml 中,我将限制 userRoles 或 Roles 列的资源吗?

4

1 回答 1

1

我能够让我的登录正常工作,所以现在我可以为B 部分提供一个体面的答案:

当然不需要修改查询。JBoss 6 特别期望在两列结果集中构建一个表,其中用户名(或主体)匹配“?” 第一列将是用户所在的组,第二列只是条目“角色”。

它是 JBoss 特定的,后备表的一个示例是:

username | groupid
--------------
james | admin
james | users
james | backupadmin
admin | admin

当用户名james尝试登录角色查询时,结果集将是:

col1 | col2
--------------
admin | Roles
users | Roles
backupadmin | Roles
于 2012-07-06T17:52:58.320 回答