0

JSFアプリケーションのセキュリティを処理するためにSpringを使用しています。にログインページが/loginあり、Springを次のように構成しました。

<http authentication-manager-ref="authenticationManager">
    <intercept-url pattern="/login" access="IS_AUTHENTICATED_ANONYMOUSLY" />
    <intercept-url pattern="/admin" access="ROLE_ADMIN" />
    <intercept-url pattern="/javax.faces.resource/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
    <intercept-url pattern="/**" access="ROLE_ADMIN,ROLE_USER" />
    <form-login login-page="/login" authentication-failure-url="/login" />
    <logout logout-url="/logout" />
</http>

の管理ページを、その役割/adminを持つユーザーだけが利用できるようにしたい。ROLE_ADMINユーザーはROLE_ADMINROLE_USERアプリケーションルートから始まるページにアクセスできます。

どちらかの役割を持つユーザーでログインすると、ログイン後に表示されるはずのページが表示されます。ただし、次のアクションが何であれ、/loginログインしていないようにリダイレクトされます。これを1日機能させようとしているので、誰かに説明してもらえますか。Spring 3.1.xのドキュメントを読んでいますが、問題を解決する方法についての手がかりが得られません。ちなみにSpring3.1.1.Releaseを実行しています。

追加のボーナス情報:ログイン後に表示されるページには、ユーザーが持っている場合にのみレンダリングされる要素がありますROLE_ADIN。ログイン後にその要素を見ることができます。PrettyFacesを実装したときに問題が始まりました。私は一般的な問題をWebで検索しましたが、PrettyFacesフィルターがSpringセキュリティフィルターの後に表示されるはずだと思いついただけです。これは事実なので、正しく機能するはずですか?

更新:式を使用するように構成を更新しました。ただし、問題はまだ存在します。

<http authentication-manager-ref="authenticationManager" use-expressions="true">
    <intercept-url pattern="/login" access="permitAll" />
    <intercept-url pattern="/admin" access="hasRole('ROLE_ADMIN')" />
    <intercept-url pattern="/javax.faces.resource/**" access="permitAll" />
    <intercept-url pattern="/**" access="hasAnyRole('ROLE_ADMIN','ROLE_USER')" />
    <form-login login-page="/login" authentication-failure-url="/login" />
    <logout logout-url="/logout" />
</http>

ログイン直後にFirebugのコンソールに出力します(ページはAJAX呼び出しを試みます):

Firebugコンソールログ

4

1 に答える 1

1

まず、問題が発生した場合は常にSpring Securityをデバッグします(add log4j.logger.org.springframework.security=DEBUG)。

第二に、私はあなたが欲しかったと思いますhasAnyRole

<intercept-url pattern="/**" access="hasAnyRole(ROLE_ADMIN,ROLE_USER)" />

use-expressions="true"プラスに追加http

<http authentication-manager-ref="authenticationManager" use-expressions="true">

ROLE_ADMINxorROLE_USERユーザーがページにアクセスできるようにします。現在の構成では、ユーザーはにアクセスするために両方の役割を持っている必要があります/**

于 2012-09-13T16:06:40.843 に答える