spring security之 默认登录页源码跟踪

spring security之 默认登录页源码跟踪

​ 2021年的最后2个月,立个flag,要把 Spring Security 和 Spring Security OAuth2 的应用及主流程源码研究透彻!

​ 项目中使用过Spring Security的童鞋都知道,当我们没有单独自定义登录页时,Spring Security自己在初始化的时候会帮我们配置一个默认的登录页,之前一直疑问默认登录页是怎么配置的,今晚特地找了源码跟一下。

springboot项目依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-security</artifactId>
</dependency>

在项目中随意编写一个接口,然后进行访问

@GetMapping("/")
public String hello() {
   return "hello, spring security";
}

在tomcat默认端口8080, localhost:8080 下访问该接口,spring security会帮我们将路径重定向到默认的登录页

​ 那么这个默认页是怎么来的呢?

原来Spring Security有一个默认的 WebSecurityConfigurerAdapter ,发现其中有一个 init 方法,于是在这个方法打了断点,在应用启动的时候进行跟踪。

​ 跟踪 getHttp() 方法, this.disableDefaults 变量默认为false,意味着将会执行 applyDefaultConfiguration(this.http); 方法。查看 applyDefaultConfiguration 方法

 

public void init(WebSecurity web) throws Exception {
    // 首先配置security要拦截的哪些http请求
   HttpSecurity http = getHttp();
   web.addSecurityFilterChainBuilder(http).postBuildAction(() -> {
      FilterSecurityInterceptor securityInterceptor = http.getSharedObject(FilterSecurityInterceptor.class);
      web.securityInterceptor(securityInterceptor);
   });
}

protected final HttpSecurity getHttp() throw
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值