0

質問1:

アプリケーションでスプリングセキュリティを設定しましたが、少し奇妙な問題が発生しました。私が春のセキュリティから学んだことは、これ@RolesAllowed({"ROLE_ADMIN"})を設定する場合、メソッドの上にこのコード行を追加する必要はないということです。

<sec:http auto-config="true" access-denied-page="/faces/accessDenied.xhtml">
    <sec:form-login login-page="/faces/login.xhtml" />
    <sec:intercept-url pattern="/faces/admin/**" access="ROLE_ADMIN" />
</sec:http>

しかし、どうやら私はスプリングセキュリティなしで「/ faces/admin」フォルダにあるページに行くことができます私はログインページにリダイレクトされます。

質問2:

メソッドの上にコードがある@RolesAllowed({"ROLE_ADMIN"})と、ログインページにリダイレクトされて正しく機能しますが、これを使用すると、コンソールでアクセス拒否エラーが発生し、エラーコードが多数表示されます(アプリケーションは引き続き正しく実行されます)。コンソールでアクセス拒否エラーが発生しても問題ありませんか、そうでない場合は、それを処理するための最良の方法は何ですか?

@RolesAllowed私はまだ制限されたページフォルダを持ちたいので、adminフォルダにあるすべてのメソッドの上に書く必要はありません。

PS:それはJSF2.0プロジェクトです。

よろしくお願いします。

4

1 に答える 1

0

質問1:web.xmlにDelegatingFilterProxyがないようです。次のように構成します。

<filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

そして、http要素を以下のように構成します。

<http auto-config="true" >
   <intercept-url pattern="/faces/login.xhtml*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
   <intercept-url pattern="/faces/admin/**" access="ROLE_ADMIN" />
   <access-denied-handler error-page="/faces/accessDenied.xhtml" />
   <form-login login-page='/faces/login.xhtml' default-target-url='/faces/index.xhtml'
        always-use-default-target='true'/>
</http>

また、上記の属性は非推奨であるため、access-denied-page属性の代わりにaccess-denied-handlerを使用してください。ソース

質問2:はい。ログレベルをDEBUGに設定し、匿名ユーザーとして初めて保護されたリソースにアクセスする場合、これは正常です。このFAQの1.3を参照してください

于 2012-04-21T18:09:19.590 に答える