我有一个错误页面,当返回404响应状态时会显示该页面。此页面的生成归功于模板机制(我使用图块);在此模板中,我有一个包含以下内容的标头:
<sec:authorize access="isAnonymous()"> blabla </sec:authorize> <sec:authorize access="isAuthenticated()"> blibli </sec:authorize>
因此,根据用户是否通过身份验证,它会显示blibli或blabla。该代码适用于所有使用此模板的页面,但我的404页面除外!它什么也没显示!
任何的想法??
我敢打赌,问题在于你如何定义filter-mapping的web.xml。最常见的配置是:
filter-mapping
web.xml
<filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
此过滤器将过滤器映射到所有URL,但仅当它们通过REQUEST方法访问时才过滤。所有其他情况下(如INCLUDE,FORWARD和ERROR)不受此过滤器捕获。因此,要将过滤器绑定到ERROR请求,请将其定义为
REQUEST
INCLUDE
FORWARD
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可能通过这种方式包含页面。
<dispatcher>INCLUDE</dispatcher>