Spring Security教程之自定义Spring Security默认的403页面

在最新的Spring Security教程-Spring Security实现访问控制教程中,如果没有授权的用户访问加密的页面,默认的403页面就会展示

在本次教程中,我们教你两种自定义Spring Security 默认的403页面的方法

1.使用access-denied-handler标签

最简单的方法就是使用access-denied-handler标签,在“error-page”设置你自己的403页面

1
2
3
4
 <http auto-config="true">
    <intercept-url pattern="/admin*" access="ROLE_ADMIN" />
    <access-denied-handler error-page="404"/>
  </http>

2.实现AccessDeniedHandler类

第二种方法就是创建一个类并实现AccessDeniedHandler类,重写“handle()”方法,在里面设置你自己的访问逻辑

MyAccessDeniedHandler.java 

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
package com.mkyong.common.handler;
  
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;
    }
  
    @Override
    public void handle(HttpServletRequest request,
        HttpServletResponse response,
        AccessDeniedException accessDeniedException) throws IOException,
        ServletException {
  
       response.sendRedirect(accessDeniedUrl);
       request.getSession().setAttribute("message",
        "You do not have permission to access this page!");
  
    }
  
    public String getAccessDeniedUrl() {
        return accessDeniedUrl;
    }
  
    public void setAccessDeniedUrl(String accessDeniedUrl) {
        this.accessDeniedUrl = accessDeniedUrl;
    }
}

3.例子

下面假设是你自定义的403页面

403.jsp

1
2
3
4
5
6
<html>
<body>
    <h1>HTTP Status 403 - Access is denied</h1>
    <h3>Message : ${message}</h3>    
</body>
</html>

现在假如没有权限的用户访问受保护的页面,你自定义的403页面就会展示:

原创文章,转载请注明出处:http://www.it161.com/article/javaDetail?articleid=140113232712

更多原创内容,请访问:http://www.it161.com/

转载于:https://my.oschina.net/dianfusoft/blog/195413

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值