Spring Boot 自定义授权标头请求根本没有通过

Posted

技术标签:

【中文标题】Spring Boot 自定义授权标头请求根本没有通过【英文标题】:Spring Boot Custom Authorization Header request not going through at all 【发布时间】:2018-03-11 23:27:08 【问题描述】:

所以我有一个 Spring Boot 应用程序,我正在使用 PostMan 向它发送一个请求。它使用 Spring Security 和 JWT 进行身份验证。我正在尝试获得工作授权,但遇到了问题。 Spring能够登录用户并返回一个令牌罚款。但是当我将令牌放在标题中时,它根本不起作用。我没有得到服务器的响应。删除令牌后,它可以正常工作。现在无论是否登录,所有请求都应该能够通过。

我的 Spring Web 配置:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurity extends WebSecurityConfigurerAdapter 
    @Override
    protected void configure(HttpSecurity http) throws Exception 
        http.cors().and().csrf().disable()
        .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        .and()
        .addFilter(new JWTAuthenticationFilter(authenticationManager()))
        .addFilter(new JWTAuthorizationFilter(authenticationManager()));
    

我尝试访问的 REST 路径:

@RestController("threadService")
@RequestMapping("/api/thread")
public class ThreadService 
    @RequestMapping(value="/list", method=RequestMethod.GET)
    public List<ThreadDetails> getThreadList() 
        logger.info("getThreadList");
        return threadDao.getThreadList();
    

我在登录并获得令牌后发出的失败的 GET 请求:

GET /api/thread/list HTTP/1.1
Host: localhost:8080
Authorization : Bearer (JWT token here)
Cache-Control: no-cache
Postman-Token: 69565839-4806-b4f6-9a03-11382a80c7da

当标头中没有授权时,上述请求可以正常工作。

【问题讨论】:

【参考方案1】:

不确定这正是我所面临的问题。 当我想与spring boot应用程序暴露的restservice进行通信时,没有设置“授权”。我遵循了通信所需的步骤,但值不会通过标头传递。

我找到的解决方案是“通用编解码器”库丢失。一旦我在我的 Web 应用程序中添加了依赖项,它就会开始将标头中的“授权”发送到我的 Spring Boot 应用程序。 希望这对某人有所帮助。

【讨论】:

好的,在你的情况下,很好,但是当你在 Postman 上发出请求并且一切正常,但是当你使用时,比如说 Axios(在 React 中),授权标头永远不会到达请求标头上的服务器端?

以上是关于Spring Boot 自定义授权标头请求根本没有通过的主要内容,如果未能解决你的问题,请参考以下文章

如何在所有请求标头中传递授权令牌 - Spring Boot java

从使用 Angular 7 的请求中接收 Spring Boot 中的空授权标头,但 Postman 工作正常

如何在 Spring Boot oauth2 资源服务器中使用自定义身份验证标头

Spring Boot CORS 配置不接受授权标头

授权标头未在后端 Angular 2 + Spring Boot 中接收

使用 Spring Security 自定义 Http 授权标头