我想配置我的spring应用程序安全性,所有的请求都应该在被服务之前进行身份验证。
因此,我创建了一个过滤器链bean:
@Bean
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http)
throws Exception {
return http
.authorizeRequests().anyRequest().authenticated()
.and().formLogin()
.and().build();
}
我还发现authorizeRequests方法有一个重载版本,它接受一个定制器接口参数。
@Bean
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http)
throws Exception {
return http
.authorizeRequests(authorizeRequests ->
authorizeRequests.anyRequest().authenticated()
)
.formLogin()
.and().build();
}
我注意到参数化的authorizeRequests方法将返回相同的HttpSecurity对象,因此您可以继续进行配置而无需调用和()。
如果只是这样的话,这个超负荷版本岂不是显得多余了?
1条答案
按热度按时间9q78igpj1#
这两种声明
authorizeRequests
的方法都是有效的。接受定制器的方法是一种使代码更容易阅读的方法,因为它避免了多个缩进级别。建议使用lambda定制器。authorizeRequests
和authorizeHttpRequests
之间的区别在here中进行了说明。authorizeHttpRequests
使用新的简化的AuthorizationManager
API和AuthorizationFilter
,而authorizeRequests
使用AccessDecisionManager
和FilterSecurityInterceptor
。后者将在Spring Security的未来版本中被弃用。