SpringBoot+SpringSecurity系列七:自定义403页面

本文详细介绍了如何在Spring Security中配置403 Forbidden页面,自定义AccessDeniedHandler,以及设置访问权限规则,确保只有经过认证的用户才能访问特定资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

403简介

403 Forbidden - 拒绝访问
403 Forbidden 是HTTP协议中的一个状态码(Status Code)。可以简单的理解为没有权限访问此站。
该状态表示服务器理解了本次请求但是拒绝执行该任务,该请求不该重发给服务器。在HTTP请求的方法不是“HEAD”,并且服务器想让客户端知道为什么没有权限的情况下,服务器应该在返回的信息中描述拒绝的理由。在服务器不想提供任何反馈信息的情况下,服务器可以用404 Not Found代替403 Forbidden。

第一步:在resources目录中创建403.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>403</title>
</head>
<body>
<h2>403</h2>
</body>
</html>

第二步:在Controller中添加对应的跳转控制

@GetMapping("/open403")
String open403() {
    return "403";
}

第三步:自定义AccessDeniedHandler

@Component
public class MyAccessDeniedHandler implements AccessDeniedHandler {
    @Override
    public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
        response.sendRedirect(request.getContextPath()+"/open403");
    }
}

第四步:修改SpringSecurity配置文件

@Resource
private MyAccessDeniedHandler myAccessDeniedHandler;

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.formLogin() //表单登录
            .usernameParameter("username123")
            .passwordParameter("password234")
            .loginPage("/openLogin") //设置登录页面对应的地址,默认是/login
            .loginProcessingUrl("/userLogin") //设置用户登录时请求的地址,默认是/login
            .and()
            .authorizeRequests()
            //授权
            .antMatchers("/openLogin").anonymous()//toLogin放行:不需要拦截,可以随便访问
            .anyRequest().authenticated()//其它请求都必须认证后才能访问
            .and()
            // 用户没有权限的页面处理
            .exceptionHandling()
            .accessDeniedHandler(myAccessDeniedHandler)   //配置403访问错误处理器
            .and()
            //关闭防火墙:为了保证完整流程可用关闭CSRF安全协议
            .csrf().disable();
}

测试

用户先登录,登录成功之后再次访问登录页面,就会打开403页面

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁云亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值