繁体   English   中英

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

[英]Problem with integrating Spring Boot backend + oauth with frontend app

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

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

以下是一些关键类:

@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 安全相关的事情,我不知道这里发生了什么 xd

首先,您将所有被 spring 安全性禁止的请求导致这行代码。

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

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

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

  1. 如果您想从每个请求中获得访问权限,请将 spring 安全性中的代码行从上面更改为:
http.authorizeRequests().antMatchers("/**").permitAll();
  • “/**”表示所有文件夹和子文件夹
  • permitAll() 表示 spring 安全授予与 antMatchers function 匹配的所有请求的访问权限。
  1. 如果您想授予对某些请求的访问权限,通过登录名和其他安全内容来验证用户身份,您可以这样开始:
http.authorizeRequests()
.antMatchers("/somePath").authenticated();
.antMatchers("/somePath2").authenticated();
.antMatchers("/somePath3").permitAll();

但是 Spring 安全性比这更深,所以如果你想在可用的倍数配置中更深入地了解 go,你需要阅读官方文档。 https://docs.spring.io/spring-security/site/docs/current/reference/html5/#preface ,还有很多简单的配置示例,让大家玩得开心。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM