hle*_*one 9 java spring exception-handling jsp-tags spring-security
将Exception映射到404页面时,Spring Security标记无法从安全上下文中查找身份验证信息.使用"真实"404,可以找到认证.
我的web.xml:
<error-page>
<exception-type>com.example.NotFoundException</exception-type>
<location>/app/404</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/app/404</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)
在JSP上我有:
<sec:authorize access="hasRole('ROLE_USER')">
<%-- Show navigation links --%>
</sec:authorize>
<sec:authorize access="isAnonymous()">
<%-- Show login form --%>
</sec:authorize>
Run Code Online (Sandbox Code Playgroud)
该/app/404路径被映射到一个控制器,该控制器仅返回图.当我浏览到/foo/some_invalid_id该NotFoundException会从控制器抛出最后当它进入JSP无法找到在认证SecurityContext并呈现既不两个选项.相反,当我浏览/something_that_really_doesnt_exist它时,它能够弄清楚我是否登录并呈现正确的HTML.
app*_*k42 17
将以下两个调度程序元素添加到spring security filter-mapping中:
<filter-mapping>
...
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
默认情况下,只有普通请求才会通过定义的过滤器映射.
"INCLUDE"和"FORWARD"是另外两个有效的调度程序元素值.
| 归档时间: |
|
| 查看次数: |
3870 次 |
| 最近记录: |