spring secruity 教程自定义 403 页面
By:Roy.LiuLast updated:2013-12-16
前面一篇文章试验了ROLE_USER,ROLE_ADMIN 不同的权限,当不满足权限的时候,spring security 会出现一个 很丑陋的 403 页面,一点都不友好,所以在很多情况下,需要定制一个 403的页面来显示用户没有权限访问.
原始的 403 页面如下:
为了让程序不显示这么丑陋的页面,先自己定义一个403.jsp页面,比较简陋,美工自己处理
将有两种方法可以定制 403 错误页面.
方法一, 配置 access-denied-handler 方式实现
另外,还需要实现一个 403 页面的controller
方法二, 实现 spring 的 AccessDeniedHandler, 重写 handle() 方法
然后在 spring-mvc-servlet.xml 中配置bean
在spring security.xml 中配置
运行程序,用ROLE_USER 权限的 yihaomen 用户登录,出现自定义错误页面,说明自定义页面成功,而用ROLE_ADMIN 可以成功访问页面, 自定义页面如下:
源代码下载:
spring security 自定义 403 错误页面
原始的 403 页面如下:
为了让程序不显示这么丑陋的页面,先自己定义一个403.jsp页面,比较简陋,美工自己处理
将有两种方法可以定制 403 错误页面.
方法一, 配置 access-denied-handler 方式实现
另外,还需要实现一个 403 页面的controller
@RequestMapping(value = "/403", method = RequestMethod.GET) public String errorpage(ModelMap model) { model.addAttribute("message", "你没有访问权限"); return "403"; }
方法二, 实现 spring 的 AccessDeniedHandler, 重写 handle() 方法
package com.yihaomen.accesshandle; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.web.access.AccessDeniedHandler; public class MyAccessDeniedHandler implements AccessDeniedHandler { private String accessDeniedUrl; public MyAccessDeniedHandler() { } public MyAccessDeniedHandler(String accessDeniedUrl) { this.accessDeniedUrl = accessDeniedUrl; } public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException { response.sendRedirect(accessDeniedUrl); request.getSession().setAttribute("message","你没有权限访问这个页面!"); } public String getAccessDeniedUrl() { return accessDeniedUrl; } public void setAccessDeniedUrl(String accessDeniedUrl) { this.accessDeniedUrl = accessDeniedUrl; } }
然后在 spring-mvc-servlet.xml 中配置bean
在spring security.xml 中配置
运行程序,用ROLE_USER 权限的 yihaomen 用户登录,出现自定义错误页面,说明自定义页面成功,而用ROLE_ADMIN 可以成功访问页面, 自定义页面如下:
源代码下载:
spring security 自定义 403 错误页面
From:一号门
COMMENTS