相关疑难解决方法(0)

Spring Security和@Async(经过身份验证的用户混淆)

我使用@Async异步调用Spring方法.该方法调用其他使用@PreAuthorize,Spring Security Annotation注释的方法.要使授权工作,我必须将SecurityContextHolder模式设置为MODE_INHERITABLETHREADLOCAL,以便将身份验证信息传递给异步调用.到目前为止一切正常.

但是,当我以不同的用户身份注销和登录时,在异步方法中,SecurityContextHolder会存储已注销的旧用户的身份验证信息.它当然会引起不必要的AccessDenied异常.同步调用没有这样的问题.

我已定义<task:executor id="executors" pool-size="10"/>,所以可能是一个问题,一旦执行程序池中的线程已初始化,它将不会覆盖身份验证信息?

spring asynchronous spring-security

33
推荐指数
5
解决办法
1万
查看次数

如何设置Spring Security SecurityContextHolder策略?

我在我的服务中使用异步方法(Spring 3 @Async注释).而且我遇到了问题 - 衍生线程没有安全上下文.原因是Spring Security默认使用SecurityContextHolder.MODE_THREADLOCAL其上下文持有者的策略.但我需要使用SecurityContextHolder.MODE_INHERITABLETHREADLOCAL策略.目前我在AuthenticationSuccessHandler中设置了策略.但在我看来,这不是一个好习惯.

那么如何在上下文配置文件中进行设置呢?
spring security的版本是3.0.0.

spring spring-security

30
推荐指数
4
解决办法
3万
查看次数

标签 统计

spring ×2

spring-security ×2

asynchronous ×1