Spring boot Spring-Security@Preauthorize和@Async

Spring boot Spring-Security@Preauthorize和@Async,spring-boot,spring-security,spring-security-ldap,spring-async,Spring Boot,Spring Security,Spring Security Ldap,Spring Async,当我从UI调用时,我正在使用@PreAuthorize(“hasRole('ADMIN')”)检查方法(在会话到期时,大约需要2到3个小时),我正在将SecurityContext设置为null 尝试了模式\u INHERITABLETHREADLOCAL,但仍然出现相同的错误 我还尝试了以下代码: 公共类CustomThreadPoolTaskExecutor扩展ThreadPoolTaskExecutor{ @凌驾 公共作废执行(最终可运行r){ 最终身份验证a=SecurityContex

当我从UI调用时,我正在使用
@PreAuthorize(“hasRole('ADMIN')”)
检查方法(在会话到期时,大约需要2到3个小时),我正在将
SecurityContext
设置为
null

尝试了
模式\u INHERITABLETHREADLOCAL
,但仍然出现相同的错误

我还尝试了以下代码:

公共类CustomThreadPoolTaskExecutor扩展ThreadPoolTaskExecutor{
@凌驾
公共作废执行(最终可运行r){
最终身份验证a=SecurityContextHolder.getContext().getAuthentication();
super.execute(新的Runnable(){
公开募捐{
试一试{
SecurityContext ctx=SecurityContextHolder.createEmptyContext();
ctx.setAuthentication(a);
SecurityContextHolder.setContext(ctx);
r、 run();
}最后{
SecurityContextHolder.clearContext();
}
}
});
}
}   
但我还是得到了同样的错误:

org.springframework.security.authentication.AuthenticationCredentialsNotFoundException:在SecurityContext中找不到身份验证对象


你试过了吗?是的,试过DelegatingSecurityContextAsyncTaskExecutor得到相同的错误。试过了链接中提供的代码