异步控制器响应中的Spring SecurityContext

异步控制器响应中的Spring SecurityContext,spring,spring-boot,spring-security,spring-restcontroller,security-context,Spring,Spring Boot,Spring Security,Spring Restcontroller,Security Context,根据WebAsyncManager文档 异步场景从线程(T1)中的请求处理开始。并发请求处理可以通过调用startCallableProcessing或startDeferredResultProcessing来启动,这两种方法都会在单独的线程(T2)中生成结果。保存结果并将请求发送到容器,以在第三个线程(T3)中使用保存的结果恢复处理。在已调度线程(T3)中,可以通过getConcurrentResult()访问保存的结果,或者通过hasConcurrentResult()检测其存在 Spri

根据
WebAsyncManager
文档

异步场景从线程(T1)中的请求处理开始。并发请求处理可以通过调用startCallableProcessing或startDeferredResultProcessing来启动,这两种方法都会在单独的线程(T2)中生成结果。保存结果并将请求发送到容器,以在第三个线程(T3)中使用保存的结果恢复处理。在已调度线程(T3)中,可以通过getConcurrentResult()访问保存的结果,或者通过hasConcurrentResult()检测其存在

Spring
SecurityContext
在T1和T2中可用,但在T3中不可用。我需要T3中的
SecurityContext
,同时序列化响应(这是一个特殊的要求)。我可以通过设置
spring.security.filter.dispatcher types=REQUEST、ERROR、ASYNC
,但这会导致我的整个
FilterChain
运行两次,这是我试图避免的


有没有办法在T3中获取
SecurityContext
,而无需再次运行
FilterChain
?没有它会很复杂,如果你有选择,你读过吗?