第 7 章 自定义访问拒绝页面

在我们的例子中,user用户是不能访问/admin.jsp页面的,当我们使用user用户登录系统之后,访问/admin.jsp时系统默认会返回403响应。

403响应

图 7.1. 403响应


如果我们希望自定义访问拒绝页面,只需要随便创建一个jsp页面,让后将这个页面的位置放到配置文件中。

下面创建一个accessDenied.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Access Denied</title>
    <style type="text/css">
div.error {
    width: 260px;
    border: 2px solid red;
    background-color: yellow;
    text-align: center;
}
    </style>
  </head>
  <body>
    <h1>Access Denied</h1>
    <hr>
    <div class="error">
      访问被拒绝<br>
      ${requestScope['SPRING_SECURITY_403_EXCEPTION'].message}
    </div>
    <hr>
  </body>
</html>

    

下一步修改配置文件,添加自定义访问拒绝页面的地址。

<http auto-config='true' access-denied-page="/accessDenied.jsp">
    <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
    <intercept-url pattern="/**" access="ROLE_USER" />
</http>
    

现在访问拒绝的页面就变成了下面这样:

自定义访问拒绝页面

图 7.2. 自定义访问拒绝页面


实例在ch007。

注意

这个功能是通过ExceptionTranslationFilter的accessDeniedHandler来实现的。