2

パート A: 役割と役割グループ

jboss DatabaseServerLoginModuleのRoleRoleGroupの違いを誰か説明できますか? JBoss 6 ドキュメントの例を見て混乱しています

混乱の 1 つの領域は、ユーザーからロールへのマッピング テーブルに 3 つの列がある論理テーブルについて説明する場合です。

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

しかし、彼らが提供する例では、2 つの列しか使用していません。

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

2 つの列はタイプミスですか、それとも私がよく知っている 2 つの列のユーザーからロールへのマッピング テーブルを使用できますか? 1 つのソース列 userRoles から 2 つの列を作成するクエリを使用すると、このアプリでは Roles と RoleGroup が同じになります。 .

ところで - Glassfish 3および以前のjBoss3の従来の jdbcRealm 認証では、単純な 1 対多の関係であり、ユーザー名がグループ名にマップされる 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 列のリソースを制約しますか?

4

1 に答える 1

1

ログインを機能させることができたので、パートBに適切な回答を提供できます。

確かに、クエリを修正する必要はありません。JBoss 6は、ユーザー名(またはプリンシパル)が「?」と一致するテーブルが作成される2列の結果セットを特に期待しています。最初の列はユーザ​​ーが属するグループになり、2番目の列は単なるエントリ「ロール」になります。

これはJBoss固有であり、バッキングテーブルの例は次のようになります。

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

また、ユーザー名jamesがrolesQueryにログインしようとしたときの結果セットは次のようになります。

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