Glassfish 3.1 + JDBCRealm + MySQL(MD5)でFORMベースの自動化を実装しました。私はuserとadminという2つの役割しか持っていません。は、それがそのように、2つの異なるインデックス・ファイルを作成することは可能です:すべてが素晴らしい起こっている、私は(ウォッチ下記ログ)認証がusetとして、および管理者としての両方のケースで働いているログインJava EE 6/Glassfishのユーザー役割に応じて2つの異なるウェルカムページにリダイレクト
Q1から見ることができますユーザーがadminの場合は/admin/index.xhtmlに行き、ユーザーがロールのユーザーの場合はfaces/user/index.xhtmlに直接進みます。
Q2:私はユーザーとしてログインしたときに今、私はまだそれを避けるために、どのように、なぜ、JA、単にブラウザでフィールドに対処するためにストレート全体のリンクを足すと、「管理者側」に行くことができますか?
Q3:私はユーザーとしてログインし、私は/が管理/いるindex.xhtmlウェルカムファイルリストで、それはxmlファイルが何かを伝えても、そのファイルに私をリダイレクト直面ONLYいる、なぜ?
<welcome-file-list>
<welcome-file>faces/admin/index.xhtml</welcome-file> *?? ----> it goes always here, cause it is the first one I think?*
<welcome-file>faces/user/index.xhtml</welcome-file>
</welcome-file-list>
<security-constraint>
<display-name>Admin Pages</display-name>
<web-resource-collection>
<web-resource-name>Protected Admin Area</web-resource-name>
<description/>
<url-pattern>/faces/admin/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<display-name>User Pages</display-name>
<web-resource-collection>
<web-resource-name>Protected Users Area</web-resource-name>
<description/>
<url-pattern>/faces/users/*</url-pattern>
<!--url-pattern>/faces/users/index.xhtml</url-pattern-->
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>HEAD</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>JDBCRealm</realm-name>
<form-login-config>
<form-login-page>/faces/loginForm.xhtml</form-login-page>
<form-error-page>/faces/loginError.xhtml</form-error-page>
</form-login-config>
</login-config>
</web-app>
LOG:
FINE: Login module initialized: class com.sun.enterprise.security.auth.login.JDBCLoginModule
FINEST: JDBC login succeeded for: admin groups:[admin, user]
FINE: JAAS login complete.
FINE: JAAS authentication committed.
FINE: Password login succeeded for : admin
FINE: Set security context as user: admin
FINE: [Web-Security] Setting Policy Context ID: old = null ctxID = jdbcrealm/jdbcrealm
FINE: [Web-Security] hasUserDataPermission perm: (javax.security.jacc.WebUserDataPermission GET)
FINE: [Web-Security] hasUserDataPermission isGranted: true
FINE: [Web-Security] Policy Context ID was: jdbcrealm/jdbcrealm
FINE: [Web-Security] Codesource with Web URL: file:/jdbcrealm/jdbcrealm
FINE: [Web-Security] Checking Web Permission with Principals : null
(myfearの答えの後編集) は-----のglassfish-web.xmlので、私はそのような役割を持っています。私がそれを正しく理解すれば、それは管理者が管理者、顧客、およびユーザーのグループに属していることを意味します。顧客はグループに属します:顧客とユーザー、ユーザーはグループユーザーに属します。私はそれを正しく理解しましたか?
<security-role-mapping>
<role-name>admin</role-name>
<group-name>admin</group-name>
<group-name>customer</group-name>
<group-name>user</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>customer</role-name>
<group-name>customer</group-name>
<group-name>user</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>user</role-name>
<group-name>user</group-name>
</security-role-mapping>
</glassfish-web-app>
ありがとうございます! Sami
ありがとうmyfear!だから私は思ったように動作するはずです。 admin auth-constraint>が/faces/admin/* url-pattern>の場合admin-roleの人は誰にも入るべきではありませんか?私の場合、認証された人は誰でも入ることができます。少し質問を更新しました。 –
Sami