所以我有一个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
如果标题中没有授权,上述请求可以正常工作。
答案 0 :(得分:0)
不确定这正是我面临的问题。 当我想与Spring Boot应用程序公开的restservice通信时,未设置“授权”。我遵循了通信所需的步骤,但该值不会通过标头传递。
我找到的解决方案“通用编解码器”库丢失了。在我的Web应用程序中添加依赖项后,它将开始将标头中的“授权”发送到我的Spring Boot应用程序。 希望这对某人有帮助。