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 资源服务器中使用自定义身份验证标头