根据Spring Security
在Customizer的withDefaults()指示:
返回不更改输入参数的Customizer
。
但这到底意味着什么呢?
例如,如果我这样使用它,结果是什么:
@EnableWebSecurity
@Configuration
public class SecurityConfiguration {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeHttpRequests((authz) -> authz.anyRequest().authenticated())
.httpBasic(withDefaults());
return http.build();
}
}
字符串
2条答案
按热度按时间os8fio9y1#
根据java doc,我们有
字符串
该参数的类型为
Customizer<HttpBasicConfigurer<HttpSecurity>>
,它可以用作lambda函数,将您希望在配置器中应用的更改传递给httpBasic
方法。此方法还返回构建的HttpSecurity
,因此当httpBasic(....)
方法结束时,配置器已经被应用。一个相对于你的例子,让我们命名它Example 1
型
因此,配置者将通过您提供的lambda函数将
realmName
和authenticationEntryPoint
应用于httpSecurity
。如果您不想在
httpBasic
方法中对httpSecurity
进行任何修改,您也可以使用型
Spring为了避免把这个不合理的
httpSecurityHttpBasicConfigurer -> {}
写成参数,在函数接口Customizer
中也给了你这个静态withDefaults
方法。请记住,这个Customizer
只是一个通用的接口,并且将在其他地方使用,而不仅仅是在这里。型
为了避免
型
你也可以写
型
这意味着在
httpSecurity
对象中的httpBasic
方法内部不会应用任何配置。但是请记住,您还可以从Java Docs中获得另一种方法
型
它也可以被使用,它不会返回修改过的
httpSecurity
对象,而是返回一个HttpBasicConfigurer
,它可以被写入为使用builder模式修改httpSecurity
。因此,示例1现在可以写成
型
如果您不想对
httpSecurity
应用任何基本的http配置更改,您可以跳过构建器模式中的realmName
和authenticationEntryPoint
方法,它将再次为您提供httpSecurity
的默认基本配置型
这和
型
1u4esq0p2#
使用默认设置。
对于EX,
1.授权谁
1.如何授权