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/**"); |