春季安全:定制403访问被拒绝页面
如果用户无权访问页面,则将显示默认的403页面,如下所示:
您可以如下页面自定义403:
如果要配置自定义403访问被拒绝页面,可以通过两种方法进行。
- 使用访问被拒绝的处理程序错误页面
- 使用AccessDeniedHandler 参考
使用访问被拒绝的处理程序错误页面
1 2 3 4 5 6 |
<http 汽车-配置=“真正” 利用-表达=“真正”> <访问-被拒绝-处理程序 错误-页="/403" /> ... 其他 参赛作品 </http> |
因此,如果用户无权访问页面,它将被重定向到/ 403,您可以在控制器类中处理403,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//用于403访问被拒绝的页面 @请求映射(值 = "/403", 方法 = 请求方法.得到) 上市 模型和视图 拒绝访问(主要 用户) { 模型和视图 模型 = 新 模型和视图(); 如果 (用户 != 空值) { 模型.addObject(“味精”, “嗨” + 用户.getName() + “,您无法访问此页面!”); } 其他 { 模型.addObject(“味精”, “您无法访问此页面!”); } 模型.setViewName("403"); 返回 模型; } |
我们可以如下创建403.jsp:
1 2 3 4 5 6 7 8 9 10 11 |
<%@ 标签库 字首=“C” 乌里="http://java.sun.com/jsp/jstl/core"%> <html> <身体> <h1>HTTP 状态 403 - 访问 是 被拒绝</h1> <h2>${味精}</h2> <c:网址 值=“ / j_spring_security_logout” 变种=“ logoutUrl” /> <a href=“ $ {logoutUrl}”>日志记录 出</a> </身体> </html> |
请参阅 弹簧安全数据库认证 用于spring-security.xml和其他文件。
使用AccessDeniedHandler参考:
您还可以使用AccessDeniedHandler处理403访问被拒绝的页面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
包 组织.Arpit.爪哇2blog.处理程序; 进口 爪哇.io.IOException; 进口 爪哇x.小服务程序.ServletException; 进口 爪哇x.小服务程序.http.HttpServletRequest; 进口 爪哇x.小服务程序.http.HttpServletResponse; 进口 组织.弹簧框架.安全.访问.访问DeniedException; 进口 组织.弹簧框架.安全.网路.访问.访问DeniedHandler; 上市 类 CustomAccessDeniedHandler 实施 访问DeniedHandler { 私人的 串 错误Page; 上市 CustomAccessDeniedHandler() { } 上市 CustomAccessDeniedHandler(串 错误Page) { 这个.错误Page = 错误Page; } 上市 串 getErrorPage() { 返回 错误Page; } 上市 虚空 setErrorPage(串 错误Page) { 这个.错误Page = 错误Page; } @覆写 上市 虚空 处理(HttpServletRequest 请求, HttpServletResponse 响应, 访问DeniedException 访问DeniedException) 抛出 IOException, ServletException { //您可以重定向到错误页面 响应.sendRedirect(错误Page); } } |
您需要在spring-security.xml的http标记中添加ref。
1 2 3 4 5 6 7 8 9 |
<http 汽车-配置=“真正” 利用-表达=“真正”> <访问-被拒绝-处理程序 参考=custom403 /> </http> <豆子:豆 ID =“ custom403” 类=“ 组织.arpit.java2blog.handler.CustomAccessDeniedHandler”> <豆子:属性 名称=“ 错误Page” 值="403" /> ... 其他 参赛作品 |