我正在查看最新的Spring Authorization Server v0.2.0并发现在提供的 sample authorizationserver 上配置了两个 formLogin()
.
其中一个是AuthorizationServerConfig.java :
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
OAuth2AuthorizationServerConfiguration.applyDefaultSecurity(http);
return http.formLogin(Customizer.withDefaults()).build();
}
另一个是DefaultSecurityConfig.java :
@Bean
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeRequests(authorizeRequests ->
authorizeRequests.anyRequest().authenticated()
)
.formLogin(withDefaults());
return http.build();
}
我的问题是:
- 为什么配置了两个
formLogin()
- 如果我想自定义
formLogin()
我应该更改哪一个?
最佳答案
formLogin()
的原因配置在 AuthorizationServerConfig
纯粹是一个“方便配置”,因为它将设置 LoginUrlAuthenticationEntryPoint
并执行重定向到 /login
当当前请求未经过身份验证时。
例如,当客户端重定向到/oauth2/authorize
时并且用户未通过身份验证,用户将被重定向到 /login
,它将匹配 SecurityFilterChain
由 DefaultSecurityConfig
定义不是AuthorizationServerConfig
.
基本上,formLogin()
在AuthorizationServerConfig
其唯一目的是执行重定向到 /login
,最终匹配 DefaultSecurityConfig
SecurityFilterChain
.
关于spring-boot - 为什么Spring Authorization Server中配置了两个formLogin 示例代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69126874/