Spring Security学习记录-关于登录页面和登录接口设置

前言

首先在Spring Security中,如果我们不做任何配置的话,默认的登录页面和登录地址都是/login,这是为什么呢?如果要把这两个地方设置为我们自定义的又该如何设置呢?

默认情况下-分析过程

在 Spring Security 中,如果我们不做任何配置,默认的登录页面和登录接口的地址都是 /login,也就是说,默认会存在如下两个请求:

GET http://localhost:8080/login
POST http://localhost:8080/login

如果是 GET 请求表示你想访问登录页面,如果是 POST 请求,表示你想提交登录数据。

下面从源码的角度分析了一下为什么是这样的。

我们知道,form 表单的相关配置在 FormLoginConfigurer 中,该类继承自 AbstractAuthenticationFilterConfigurer ,所以当 FormLoginConfigurer 初始化的时候,AbstractAuthenticationFilterConfigurer 也会初始化,在 AbstractAuthenticationFilterConfigurer 的构造方法中,我们可以看到:

在这里插入图片描述

这就是配置默认的 loginPage 为 /login。

另一方面,FormLoginConfigurer 的初始化方法 init 方法中也调用了父类的 init 方法:

在这里插入图片描述

而在父类的 init 方法中,又调用了 updateAuthenticationDefaults,我们来看下这个方法:

在这里插入图片描述
从这个方法的逻辑中我们就可以看到,如果用户没有给 loginProcessingUrl 设置值的话,默认就使用 loginPage 作为 loginProcessingUrl。

自定义下-分析过程

如果我们想自定义表单的登录页面和登录接口的地址又该如何设置呢,其实可以通过写一个配置类SecurityConfig继承自WebSecurityConfigurerAdapter,然后重写这个自定义的认证方法 protected void configure(HttpSecurity http) throws Exception {},在方法里面设置。

在这里插入图片描述
其中loginPage定义的是登录页面地址,loginProcessingUrl定义的是登录接口的地址,对应的是我们在表单提交时的action地址。那自定义下又是如何设置上的呢,下面我们看一下源码分析过程。

我们通过在编辑下点击loginPage进入到AbstractAuthenticationFilterConfigurer类的setLoginPage方法可以可以看到这里设置上了

在这里插入图片描述
同样点击loginProcessingUrl可以看到在AbstractAuthenticationFilterConfigurer类中也设置上了

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值