A部分:角色与角色组
有人可以解释jboss DatabaseServerLoginModule 中角色和 RoleGroup 之间的区别吗?在查看JBoss 6 documentation
中的示例后,我感到困惑混淆的一个方面是当他们描述逻辑表时,用户到角色映射表有三列:
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创建两列的查询,现在角色和角色组现在将是相同的对于这个应用程序。
BTW - 在Glassfish 3和早期jBoss3中的传统jdbcRealm身份验证中,它是一个简单的一对多关系,并且有一个user_group表,其中用户名映射到组名。
B部分:rolesQuery
此查询是否需要修改:
select userRoles, 'Roles' from UserRoles where username=?
到此:
select userRoles, userRoles as 'Roles' from UserRoles where username=?
为了在UserRoles表上运行,或者它可以正常使用吗?
C部分:映射web.xml
在web.xml中,我会限制userRoles或Roles列的资源吗?
答案 0 :(得分:1)
我能够得到login working所以现在我可以为 B部分提供一个不错的答案:
当然不需要修改查询。 JBoss 6特别期望在两列结果集中构建一个表,其中username(或principal)匹配'?'第一列是用户所在的组,第二列只是条目“角色”。
它是JBoss特有的,支持表的一个例子是:
username | groupid
--------------
james | admin
james | users
james | backupadmin
admin | admin
当用户 james 尝试登录 rolesQuery 时,和结果集将为:
col1 | col2
--------------
admin | Roles
users | Roles
backupadmin | Roles