终极Windows优化神器:WinUtil完整指南 - 一键搞定所有Windows管理任务
2026/6/2 14:58:24
# 安全过滤器自动配置 org.springframework.boot.autoconfigure.security.servlet.SecurityFilterAutoCo nfiguration@EnableConfigurationProperties({SecurityProperties.class}) @ConditionalOnClass({AbstractSecurityWebApplicationInitializer.class, SessionCreationPolicy.class}) @AutoConfigureAfter({SecurityAutoConfiguration.class}) public class SecurityFilterAutoConfiguration { }@ConditionalOnClass({DefaultAuthenticationEventPublisher.class}) @EnableConfigurationProperties({SecurityProperties.class}) @Import({SpringBootWebSecurityConfiguration.class, WebSecurityEnablerConfiguration.class, SecurityDataConfiguration.class}) public class SecurityAutoConfiguration { }@Configuration( proxyBeanMethods = false ) @ConditionalOnBean({WebSecurityConfigurerAdapter.class}) @ConditionalOnMissingBean( name = {"springSecurityFilterChain"} ) @ConditionalOnWebApplication( type = Type.SERVLET ) @EnableWebSecurity public class WebSecurityEnablerConfiguration { public WebSecurityEnablerConfiguration() { } }/** * 声明 Spring Security 核心过滤器链(默认名称:springSecurityFilterChain) * 对应 AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME */ @Bean(name = AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME) public Filter springSecurityFilterChain() throws Exception { // 检查是否有自定义的 WebSecurityConfigurer 配置 boolean hasConfigurers = webSecurityConfigurers != null && !webSecurityConfigurers.isEmpty(); // 如果没有自定义配置,创建默认空适配器(避免构建失败) if (!hasConfigurers) { WebSecurityConfigurerAdapter adapter = objectObjectPostProcessor.postProcess( new WebSecurityConfigurerAdapter() { // 空适配器:仅保证过滤器链能构建,无实际安全规则 @Override protected void configure(org.springframework.security.config.annotation.web.builders.HttpSecurity http) throws Exception { // 6.x 需替换为 http.csrf(AbstractHttpConfigurer::disable) http.csrf().disable(); // 示例:禁用 CSRF(根据业务调整) } } ); webSecurity.apply(adapter); // 将默认适配器应用到 WebSecurity } else { // 如果有自定义配置,遍历应用所有 WebSecurityConfigurer for (WebSecurityConfigurerAdapter configurer : webSecurityConfigurers) { webSecurity.apply(configurer); } } // 构建过滤器链(返回 FilterChainProxy,实现 Filter 接口) Filter filterChain = webSecurity.build(); return filterChain; }UsernamePasswordAuthenticationFilter:
UsernamePasswordAuthenticationToken
AuthenticationManager-->ProviderManager-->AbstractUserDetailsAuthenticationProvider
retrieveUser方法
additionalAuthenticationChecks方法
AbstractAuthenticationProcessingFilter--doFilter方法
successfulAuthentication方法
AbstractAuthenticationProcessingFilter--successfulAuthentication方法
loginSuccess方法-->onLoginSuccess
RememberMeAuthenticationFilter
autoLogin方法
processAutoLoginCookie方法
AffirmativeBased(基于肯定)的逻辑是:一票通过权
ConsensusBased(基于共识)的逻辑是:赞成票多于反对票则表示通过,反对票多于赞成票则将抛出
AccessDeniedException
UnanimousBased(基于一致)的逻辑:一票否决权
FilterSecurityInterceptor
ExceptionTranslationFilter