将Spring Boot后端+ oauth与前端应用程序集成的问题

时间:2020-07-17 20:36:18

标签: java spring spring-boot oauth

我有一个后端Spring Boot应用程序,它使用Spotify api中的数据,并且需要用户登录才能为我的应用程序提供身份验证令牌。它工作正常,但我不知道如何将其与前端应用程序集成。从服务器应用程序外部(localhost:8080)发送请求时,我总是得到403代码。

问题可能是我应该在前端请求Spotify令牌,然后以某种方式将其传递到后端,但是老实说,我什至不知道我应该用什么Google来实现这一目标。

以下是一些关键类别:

@Configuration
@EnableOAuth2Sso
public class SpotifyConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception{
        http.authorizeRequests().antMatchers("/login").authenticated();
    }

}
And inside @RestController:
@GetMapping("/user")
    public Principal user(Principal principal){
        return principal;
    }

@GetMapping("/")
    public Principal home(Principal principal){
        return principal;
    }

@GetMapping("/login")
    public Principal login(Principal principal){
        return principal;
    }

这是我第一次涉及与Spring Security相关的内容,我不知道xd中发生了什么

1 个答案:

答案 0 :(得分:0)

首先,您所有受Spring安全性禁止的请求都会导致这一行代码。

http.authorizeRequests().antMatchers("/login").authenticated();

您必须授予对某些请求或任何请求的访问权限,但是在您的情况下,每个请求都被禁止。这就是为什么当您尝试通过休息访问Spring Boot应用程序时收到403状态(禁止)的原因

因此,您有多种选择来解决此问题。我给你两次。

  1. 如果您希望授予每个请求访问权限,请将Spring安全性中的代码行从上方更改为:
http.authorizeRequests().antMatchers("/**").permitAll();
  • “ / **”表示所有文件夹和子文件夹
  • permitAll()表示,与antMatchers函数匹配的所有请求均由Spring Security授予访问权限。
  1. 如果您希望访问某些请求,通过登录名和其他安全性东西对用户进行身份验证,则可以这样开始:
http.authorizeRequests()
.antMatchers("/somePath").authenticated();
.antMatchers("/somePath2").authenticated();
.antMatchers("/somePath3").permitAll();

但是Spring Security的功能远不止于此,因此,如果您想深入了解可用的倍数配置,则需要阅读官方文档。 https://docs.spring.io/spring-security/site/docs/current/reference/html5/#preface,并且它有很多简单的配置示例,可以带来乐趣。