0

jsf 2.0、struts 2、および spring 3 で直接 URL アクセスを制御するにはどうすればよいですか? ユーザータイプのURLにログインせず、常にホームまたはログインページを表示することを意味します。

4

2 に答える 2

1

spring-security のようなプロジェクトを使用してアプリケーションと統合するか、独自のサーブレット フィルターを作成することができます。

stackoverflow タグには、サーブレット フィルターの概要がよくわかります。ほとんどのサーブレット互換 Web フレームワークでは、フィルタを統合してリクエストを傍受し、無効または未承認のリクエストをそれらが属する場所にリダイレクトできます。

于 2012-06-08T10:11:19.610 に答える
0

特定の URL への直接アクセスを制御するには、Apache Shiro フィルターを使用することをお勧めします。

URL アクセスの制御が示されている Apache Shiro 構成 ini ファイルを見てください。

[main]
logout = org.apache.shiro.web.filter.authc.LogoutFilter
roles  = org.apache.shiro.web.filter.authz.RolesAuthorizationFilter
authc.loginUrl=/faces/login.xhtml
authc.successUrl=/faces/index.xhtml
roles.unauthorizedUrl = /faces/unauthorized.xhtml
logout.redirectUrl = /faces/login.xhtml?status=loggedOut
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.authenticationQuery = SELECT PASSWORD FROM USERS WHERE USERS.USERNAME = ?
jdbcRealm.userRolesQuery = SELECT ROLE_NAME FROM ROLES, USER_ROLE, USERS WHERE  ROLES.ROLE_ID = USER_ROLE.ROLE_ID AND USERS.USR_ID = USER_ROLE.USR_ID AND USERS.USERNAME = ?
jdbcRealm.permissionsQuery = SELECT PERMISSIONS.PERM_NAME FROM ROLES, PERMISSIONS_ROLE, PERMISSIONS WHERE  ROLES.ROLE_ID = PERMISSIONS_ROLE.ROLE_ID AND PERMISSIONS.PERM_ID = PERMISSIONS_ROLE.PERM_ID AND ROLES.ROLE_NAME = ?
ds = com.mysql.jdbc.jdbc2.optional.MysqlDataSource 
ds.user = maqraa
ds.password = maqraa
ds.databaseName = maqraa
ds.serverName = localhost
ds.portNumber = 3306
jdbcRealm.dataSource = $ds
securityManager.realms = $jdbcRealm

[urls]
/faces/login.xhtml = authc
/faces/admin/** = authc, roles[admin]
/faces/teacher/** = authc, roles[teacher]
/faces/reports/** = authc, roles[admin]
/faces/officer/** = authc, roles[officer]
/faces/manager/** = authc, roles[manager]
/faces/roles/** = authc, roles[admin]

前の URL を見ると、/faces/login.xhtml へのアクセスは、特定の役割を果たしている必要があるいくつかの URL へのアクセスに加えて、認証されたユーザーによって行われなければならないことがわかります。 .

stackoverflow で Shiro タグを確認するか、Apache Shiro サイトを参照してください。

お役に立てば幸いです。ありがとう。

于 2012-06-12T07:34:19.500 に答える