对于我希望处理的每个错误代码,我都有自定义错误页面,尽管我发现 spring-security 标记在使用这些页面时不起作用。例如,以下仅显示“一个”:
<%@ page session="false" %>
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %>
<p>One</p>
<sec:authorize access="isAuthenticated()">
<p>Two</p>
</sec:authorize>
<sec:authorize access="!isAuthenticated()">
<p>Three</p>
</sec:authorize>
具体来说,我的目标是 my 提供的错误页面web.xml
,即
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/error/404-layout.jsp</location>
</error-page>
在我的控制器中,我在找不到实体的地方抛出了一个带有注释的RuntimeException
调用。这会正确重定向到错误页面。ResourceNotFoundException
@ResponseStatus(value = HttpStatus.NOT_FOUND)
不起作用的正是上面所解释的,弹簧安全标签中的任何东西都不会呈现,无论是结果true
还是false
,如我的示例所示,两个标签都不会产生输出。