Spring Security JWT - 通过授权标头的邮递员身份验证有效,但从我的 Angular 前端不起作用

Posted

技术标签:

【中文标题】Spring Security JWT - 通过授权标头的邮递员身份验证有效,但从我的 Angular 前端不起作用【英文标题】:Spring Security JWT - Postman authentication through Authorization header works but from my Angular front end doesn't work 【发布时间】:2020-10-08 22:38:55 【问题描述】:

我有一个 Web 应用程序,后端使用 Java、Spring Boot 和 Spring Security,前端使用 Angular。 我已经使用 Spring Security 实现了登录,并且身份验证似乎有效 - 在 Postman 以及我的应用程序的前端中,我收到了一个 jwt 令牌。这两个令牌似乎都是正确的,因为无论我使用在 Postman 中还是在前端获取的令牌,当我在向服务器发出其他请求时在 Authorization 标头中发送任何这些令牌时,我的应用程序的后端都会接受该令牌我从服务器得到 200 OK 响应。 但这里的情况各不相同:我的请求只有在我从 Postman 发送时才被授权。当我从应用程序的前端发送(我认为)相同的请求时,后端会抛出 403 禁止。自然地,我认为我必须从前端发送请求而不是从邮递员发送请求,但我找不到任何区别。据我所知,我发送了相同的方法、相同的正文、相同的标头(带有授权令牌) 你知道那里会发生什么吗?

【问题讨论】:

你能从 Angular 到 Spring 应用程序显示请求的标头吗? 【参考方案1】:

原因是我需要在扩展 WebSecurityConfigurerAdapter 的类中启用 Spring Security 中的 cors:

protected void configure(HttpSecurity http) throws Exception 
    http
            .cors().and()

【讨论】:

以上是关于Spring Security JWT - 通过授权标头的邮递员身份验证有效,但从我的 Angular 前端不起作用的主要内容,如果未能解决你的问题,请参考以下文章

社交登录,spring-security-oauth2 和 spring-security-jwt?

总结关于spring security 使用 JWT 和 账户密码登录 整合在一起的新感悟

jwt和spring security集成

Spring Security 结合了 Container Security 和 JWT Token

Spring Security 构建基于 JWT 的登录认证

spring security jwt 安全校验