spring-boot - 为什么在 Spring Authorization Server 示例代码中配置两个 formLogin
问题描述
我正在检查最新的Spring Authorization Server v0.2.0 并发现在提供的示例formLogin()
authenticationserver上配置了两个。
一种是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()
s - 如果我想定制
formLogin()
我应该改变哪一个?
解决方案
formLogin()
配置的原因AuthorizationServerConfig
纯粹是“方便配置”,因为它将设置LoginUrlAuthenticationEntryPoint
并执行重定向到/login
当前请求未通过身份验证时。
例如,当客户端被重定向到/oauth2/authorize
并且用户未通过身份验证时,用户将被重定向到/login
,这将与NOTSecurityFilterChain
定义的匹配。DefaultSecurityConfig
AuthorizationServerConfig
基本上,formLogin()
inAuthorizationServerConfig
的唯一目的是执行重定向到/login
,最终匹配到DefaultSecurityConfig
SecurityFilterChain
.
推荐阅读
- akka - 无法第二次使用 akka 石英调度程序安排作业
- javascript - 如何使用静态方法将身份验证令牌传递给 API 类
- origen-sdk - 是否可以在 origen-sdk 中配置 User.current?
- javascript - Angular:绑定不适用于索引数组
- ruby-on-rails - 在 gem 上运行 Rails 规范之前需要执行脚本
- css - 防止 div 以负边距剪切图像
- php - 雄辩地插入表格两次
- substring - 交替子序列的在线算法方法
- php - 如何使用左外连接和联结表获取 SQL 表的所有行并在某些条件下插入值?
- java - 流合并 PDF