微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Spring Boot通过OAuth2协议登录用户?

如何解决如何使用Spring Boot通过OAuth2协议登录用户?

我使用Spring Boot 2.2.4,我想通过OAuth2协议和GitHub登录到我的应用程序。

这是我最重要的配置文件和类的源代码

application.properties文件

spring.security.oauth2.client.registration.github.client-id=[my client id]
spring.security.oauth2.client.registration.github.client-secret=[my client secret]
spring.security.oauth2.client.registration.github.redirect-uri=http://[host ip]:8080/login_success

Spring Security配置类

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    public void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/test")
                .authenticated()
                .anyRequest().permitAll()
        .and()
        .oauth2Login();
    }
}

示例控制器类

@RestController
public class SampleController {
    @GetMapping("/")
    public String home() {
        return "Home";
    }

    @GetMapping("/login_success")
    public String loginSuccessMethod() {
        return "Login success";
    }

    @GetMapping("/user")
    public OAuth2User user(@AuthenticationPrincipal OAuth2User principal) {
        return principal;
    }

    @GetMapping("/test")
    public String testMethod() {
        return "Test method";
    }
}

问题描述:

  1. 当我尝试访问/ test页面时,我被重定向到/ login页面。这是预期的行为。

  2. 单击GitHub链接后,我被重定向到github.com上的登录表单。这是预期的行为。

  3. 输入用户名和密码并单击“登录”按钮后,我将被重定向到/ login_success页面。这是预期的行为。

  4. 当我尝试再次访问/ test页面时,我被重定向到/ login页面。因此未创建会话。为什么?

  5. 当我尝试访问/ user页面时,控制器的user方法返回null。为什么?

解决方法

问题解决了。我在GitHub和application.properties文件上键入了错误的重定向uri值。正确的值为http:// [host ip]:8080 / login / oauth2 / code / github

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。