Spring Security OAuth2 自定义登录页面,自动启动身份验证流程

问题描述 投票:0回答:1

在我的 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();
  }
java spring spring-boot spring-mvc spring-security
1个回答
0
投票

您可以通过添加

failureUrl()
来配置登录错误页面的自定义 url。像这样:

.oauth2Login(oauth2 -> oauth2.loginPage("/login").permitAll()
        .failureUrl("/your-login-error-page")
        .userInfoEndpoint(userInfo -> userInfo.userService(this.oauth2UserService()))
)
© www.soinside.com 2019 - 2024. All rights reserved.