重定向/登录

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

我正在寻找针对 spring security oauth2 的以下行为的解决方案。

如果以下配置适用:

  • 控制器公开路径下的资源
    /my-resource
  • 安全配置中不允许使用路径
    /my-resource
  • 登录配置如下:
    http.oauth2Login(withDefaults())

然后 Spring Security 自动重定向到

/oauth2/authorization/<client-registration-id>
,它再次重定向到身份提供者的实际登录页面。

但是,如果对

/login
执行相同的操作,则其工作方式与
DefaultLoginPageGeneratingFilter
拦截过滤器链中的请求并使用包含
/oauth2/authorization/<client-registration-id>
链接的通用登录页面进行响应不同。我想要实现的是,禁用默认登录页面处理,并在暴露
/login
的控制器上获得与
/my-resource
相同的行为,但到目前为止我找不到任何解决方案。有什么建议吗?

spring spring-boot spring-security spring-oauth2
1个回答
0
投票

我不确定我是否理解正确:您是否定义了自己的登录控制器并想知道如何将重定向发送到您选择的 URI?

如果是,使用 Spring-MVC,您只需返回一个

RedirectView
。例如,这就是我所做的there

@GetMapping("/login")
public RedirectView getLogin() throws URISyntaxException {
    if (clientRegistrations.size() == 1) {
        return new RedirectView(loginPath(clientRegistrations.get(0)));
    }
    return new RedirectView("login/opts");
}

请注意,如果您有多个客户端通过

authorization_code
注册,您实际上希望显示您试图隐藏的页面(以便用户可以选择他更喜欢使用哪个身份提供商进行身份验证)。仅当只有 1 个
authorization_code
注册时才应跳过。

© www.soinside.com 2019 - 2024. All rights reserved.