4

404 応答ステータスが返されたときに表示されるエラー ページがあります。このページはテンプレート メカニズム (私はタイルを使用) によって生成されます。このテンプレートには、次のようなものを含むヘッダーがあります。

    <sec:authorize access="isAnonymous()">
        blabla
    </sec:authorize>
    <sec:authorize access="isAuthenticated()">
        blibli
    </sec:authorize>

そのため、ユーザーが認証されているかどうかに応じて、blibli または blabla が表示されます。このコードは、私の 404 ページを除いて、このテンプレートを使用するすべてのページで機能します! 何も表示されません!

何か案が??

4

3 に答える 3

10

その問題は、 で定義する方法にあるに違いありませfilter-mappingweb.xml。最も一般的な構成は次のとおりです。

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

これにより、フィルターがすべての URL にマップされますが、REQUESTメソッドによってアクセスされた場合のみです。このフィルターでキャッチされない他のすべてのケース ( INCLUDE、 、FORWARDなど)。ERRORフィルターをERRORリクエストにバインドするには、次のように定義します。

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

        <!-- apply Spring Security authentication to error-pages -->
        <dispatcher>ERROR</dispatcher>
</filter-mapping>

それを試してみてください。うまくいかない場合は<dispatcher>INCLUDE</dispatcher>、Tiles にこの方法でページが含まれている可能性があるため、追加します。

以下も参照してください。

于 2012-08-22T20:27:37.960 に答える
1

Java構成を探している人向け:

private void registerSpringSecurityFilterChain(ServletContext servletContext) {
  FilterRegistration.Dynamic springSecurityFilterChain = servletContext.addFilter(
        BeanIds.SPRING_SECURITY_FILTER_CHAIN, new DelegatingFilterProxy());
  springSecurityFilterChain.addMappingForUrlPatterns(null, false, "/*");
  springSecurityFilterChain.addMappingForUrlPatterns(EnumSet.of(DispatcherType.ERROR), false, "/*");

}
于 2014-12-15T05:18:37.493 に答える
0

この 404 ページが保護された URL の外にある場合、isAnonymous() と isAuthenticated() の両方が false を返し、何もレンダリングされません。

于 2012-08-17T04:28:41.173 に答える