跳至主要內容

SpringSecurity 默认配置

Jin大约 1 分钟

SpringSecurity 默认配置

1、文档参考

2、默认配置

Spring Security 是如何知道我们要要求所有的用户都要进行身份验证的?Spring Security 如何知道我们要支持基于表单的认证?

实际上,有一个配置类(称为 SecurityFilterChain )在幕后被调用。它被配置为以下的默认实现。

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
	http
		.authorizeHttpRequests(authorize -> authorize
			.anyRequest().authenticated()
		)
		.formLogin(Customizer.withDefaults())
		.httpBasic(Customizer.withDefaults());
	return http.build();
}

默认配置(如上例所示):

  • 确保对我们的应用程序的任何请求都需要用户进行认证
  • 让用户通过基于表单的登录进行认证
  • 让用户用HTTP基本认证(HTTP Basic authentication)进行认证

3、配置过滤器分析

默认情况,有15个过滤器

![image-20241122103339502](images/11-SpringSecurity 默认配置/image-20241122103339502.png)

注释表单授权方式

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests(authorize -> authorize
                        .anyRequest().authenticated()
                )
//                .formLogin(Customizer.withDefaults())
                .httpBasic(Customizer.withDefaults())
        ;
        return http.build();
    }

启动执行过滤器如下:

![image-20241122103501928](images/11-SpringSecurity 默认配置/image-20241122103501928.png)

相比少了

  1. UsernamePasswordAuthenticationFilter
  2. DefaultLoginPageGeneratingFilter
  3. DefaultLogoutPageGeneratingFilter

注释使用基本授权方式

![image-20241122103944236](images/11-SpringSecurity 默认配置/image-20241122103944236.png)

相比默认少了

  • BasicAuthenticationFilter
贡献者: Jin