2025版spring security认证授权详解篇【经典】

目录

一  springsecurity 认证授权

1.1 总流程

1.2 关键代码详解

1.3 资料

二  详解流程

2.1 WebSecurityConfig中config方法的执行顺序

2.2.1 完整的执行流程

2.2.2 完整的代码

2.3 认证流程顺序

2.4 授权流程顺序

2.5 SecurityContextHolder

2.5.1 securityContextHolder的写入

2.5.2 securityContextHolder的获取

2.5.3 线程安全与请求清理*

2.5.4 总结

2.6 完整流程的详解


一  springsecurity 认证授权

1.1 总流程

1.阶段1:启动阶段:应用启动时的配置加载顺序;先执行WebSecurityConfig类;Configure(websecurity web) 最先执行,忽略某些请求

Configure(HttpSecurity http) 其次执行,如何保护请求。

Configure(AuthenticationManagerBuilder auth) 最后执行,用户数据从哪里来。Spring security中的websecurityconfig(通常是通过@Enablewebsecurity)注解的配置类)主要是在应用启动阶段执行的。它的核心作用是配置和初始化整个 Spring Security 的过滤器链,而不是在每次请求时都执行

2.阶段2:请求执行阶段:请求处理时执行顺序:先执行usernameandpaaswordauthenticationfilter进行表单认证;

然后通过filtersecurityinterceptor进行授权;期间抛出异常,则执行ExceptionTranslationFilter。ExceptionTranslationFilter 是一个非常重要的过滤器,它负责处理认证和授权过程中抛出的所有异常。

3.configure方法:在应用启动时执行,用于配置和构建安全过滤器链。

认证/授权过滤器:在每个请求到达时执行,是构建好的过滤器链中的一个个执行节点。

启动时configure(...) 方法执行 -> 构建过滤器链 ->运行时请求到达 -> 按链中顺序 先经过认证过滤器 -> 最后经过授权过滤器。

1.2 关键代码详解

1.在websecurityconfig类中加载各种认证,授权类。

2.其中authenticationManager()这个方法在父WebSecurityConfigurerAdapter中

3.其中这里注入的userDetailsService的实现类是UserDetailsServiceImpl

4.认证时候,自动加载通过用户名查询数据库信息。

1.3 资料

29-33 详细说明配置流程执行

https://www.bilibili.com/video/BV15a411A7kP/?spm_id_from=333.337.search-card.all.click&vd_source=34a329e9a5c6f9b4f5dcf2e9fc5bcd01

二  详解流程

2.1 WebSecurityConfig中config方法的执行顺序

2.2.1 完整的执行流程

WebSecurityConfigurerAdapter中有多个configure方法,它们的执行顺序和目的完全不同。加载和配置的总体顺序是:

Step1:configure(WebSecurity web)

执行时机:最早。用于配置全局的、忽略的安全规则。

作用:配置那些需要被 Spring Security完全忽略的请求(通常用于静态资源)。这些请求不会经过任何安全过滤器链。如下:

@Override

public void configure(WebSecurity web) throws Exception {

    web.ignoring().antMatchers("/css/**", "/js/**", "/images/**");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值