一尘不染

isAnonymous()和isAuthenticated()在错误页面上均返回false

jsp

我有一个错误页面,当返回404响应状态时会显示该页面。此页面的生成归功于模板机制(我使用图块);在此模板中,我有一个包含以下内容的标头:

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

因此,根据用户是否通过身份验证,它会显示blibli或blabla。该代码适用于所有使用此模板的页面,但我的404页面除外!它什么也没显示!

任何的想法??


阅读 377

收藏
2020-06-10

共1个答案

一尘不染

我敢打赌,问题在于你如何定义filter-mappingweb.xml。最常见的配置是:

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

此过滤器将过滤器映射到所有URL,但仅当它们通过REQUEST方法访问时才过滤。所有其他情况下(如INCLUDEFORWARDERROR)不受此过滤器捕获。因此,要将过滤器绑定到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可能通过这种方式包含页面。

2020-06-10