在我的 Spring 应用程序中,当我没有配置自定义
loginPage
时,每当我点击受保护的路由时,Spring 都会启动身份验证流程,并在身份验证流程完成时重定向到该路由,这就是我想要的。
但是,当出现错误时(例如
access_denied
),Spring 会重定向到默认的 /login?error
页面。这是我要定制的页面。
所以我尝试设置一个自定义
loginPage
,这也有效,但是现在,当我点击受保护的路线时,我会被重定向到该loginPage
,但这不是我想要的。相反,我仍然希望 Spring 自动启动身份验证流程。这可能吗?
这是我的配置:
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(authorize -> authorize
.anyRequest().authenticated()
)
.oauth2Login(oauth2 -> oauth2.loginPage("/login").permitAll()
.userInfoEndpoint(
userInfo -> userInfo.userService(this.oauth2UserService()))
).logout(logout -> logout.logoutUrl("/logout"));
return http.build();
}
您可以通过添加
failureUrl()
来配置登录错误页面的自定义 url。像这样:
.oauth2Login(oauth2 -> oauth2.loginPage("/login").permitAll()
.failureUrl("/your-login-error-page")
.userInfoEndpoint(userInfo -> userInfo.userService(this.oauth2UserService()))
)