在返回SseEmitter的方法中使用@PreAuthorize返回HTTP 406

时间:2018-12-20 16:56:39

标签: spring spring-boot spring-security

我正在使用jwt进行身份验证,我怀疑它与具有令牌的请求标头有关。

在不添加@PreAuthorize的情况下接收服务器发送的事件就可以了:

__init__.py

但是,当我添加@PreAuthorize来检查使用角色时,却收到406响应(无法在http://localhost:8080/sse上建立与服务器的连接)

@GetMapping("/sse")
public SseEmitter serverSentEvent() throws IOException
{
   SseEmitter emitter = new SseEmitter(2592000000L);
   emitter.send("OK");

   return emitter;
}

1 个答案:

答案 0 :(得分:0)

显然,JWT拦截器没有在EventSource请求的授权标头中添加令牌,因此我使用了ng-event-source,它允许在EventSource中使用自定义HTTP标头。