spring-security 授权请求()与授权HttpRequests(定制器< AuthorizeHttpRequestsConfigurer.AuthorizationManagerRequestMatcherRegistry>

u3r8eeie  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(709)

我想配置我的spring应用程序安全性,所有的请求都应该在被服务之前进行身份验证。
因此,我创建了一个过滤器链bean:

  1. @Bean
  2. SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http)
  3. throws Exception {
  4. return http
  5. .authorizeRequests().anyRequest().authenticated()
  6. .and().formLogin()
  7. .and().build();
  8. }

我还发现authorizeRequests方法有一个重载版本,它接受一个定制器接口参数。

  1. @Bean
  2. SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http)
  3. throws Exception {
  4. return http
  5. .authorizeRequests(authorizeRequests ->
  6. authorizeRequests.anyRequest().authenticated()
  7. )
  8. .formLogin()
  9. .and().build();
  10. }

我注意到参数化的authorizeRequests方法将返回相同的HttpSecurity对象,因此您可以继续进行配置而无需调用和()。
如果只是这样的话,这个超负荷版本岂不是显得多余了?

9q78igpj

9q78igpj1#

这两种声明authorizeRequests的方法都是有效的。接受定制器的方法是一种使代码更容易阅读的方法,因为它避免了多个缩进级别。建议使用lambda定制器。
authorizeRequestsauthorizeHttpRequests之间的区别在here中进行了说明。authorizeHttpRequests使用新的简化的AuthorizationManager API和AuthorizationFilter,而authorizeRequests使用AccessDecisionManagerFilterSecurityInterceptor。后者将在Spring Security的未来版本中被弃用。

相关问题