[SPRING] 스프링 보안 SecurityContextHolder 전략을 설정하는 방법은 무엇입니까?
SPRING스프링 보안 SecurityContextHolder 전략을 설정하는 방법은 무엇입니까?
내 서비스에서 비동기 메서드를 사용하고있다 (Spring 3 @Async annotation). 그리고 문제가 생겼습니다. 스폰 된 스레드에는 보안 컨텍스트가 없습니다. 왜냐하면 스프링 보안은 기본적으로 컨텍스트 홀더에 대해 SecurityContextHolder.MODE_THREADLOCAL 전략을 사용합니다. 하지만 SecurityContextHolder.MODE_INHERITABLETHREADLOCAL 전략을 사용해야합니다. 잠시 동안 나는 AuthenticationSuccessHandler에 전략을 세웠다. 그러나 제 관점에서는 좋은 습관이 아닙니다.
그렇다면 컨텍스트 구성 파일에서 어떻게 설정할 수 있습니까? 스프링 보안 버전은 3.0.0입니다.
해결법
-
==============================
1.환경 변수 spring.security.strategy를 MODE_INHERITABLETHREADLOCAL로 설정할 수 있습니다. 웹 응용 프로그램을 시작할 때 SecurityContextHolder.setStrategyName (SecurityContextHolder.MODE_INHERITABLETHREADLOCAL)을 호출하고 컨텍스트 구성 파일에서 해당 값을 초기화하는 간단한 bean을 가질 수도 있습니다.
환경 변수 spring.security.strategy를 MODE_INHERITABLETHREADLOCAL로 설정할 수 있습니다. 웹 응용 프로그램을 시작할 때 SecurityContextHolder.setStrategyName (SecurityContextHolder.MODE_INHERITABLETHREADLOCAL)을 호출하고 컨텍스트 구성 파일에서 해당 값을 초기화하는 간단한 bean을 가질 수도 있습니다.
SecurityContextHolder API
-
==============================
2.그것이 당신을 돕는다면 @viator의 대답을위한 자바 설정.
그것이 당신을 돕는다면 @viator의 대답을위한 자바 설정.
@Bean public MethodInvokingFactoryBean methodInvokingFactoryBean() { MethodInvokingFactoryBean methodInvokingFactoryBean = new MethodInvokingFactoryBean(); methodInvokingFactoryBean.setTargetClass(SecurityContextHolder.class); methodInvokingFactoryBean.setTargetMethod("setStrategyName"); methodInvokingFactoryBean.setArguments(new String[]{SecurityContextHolder.MODE_INHERITABLETHREADLOCAL}); return methodInvokingFactoryBean; }
-
==============================
3.@viator 쓰기와 같은 또 하나의 해결책 :
@viator 쓰기와 같은 또 하나의 해결책 :
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetClass" value="org.springframework.security.core.context.SecurityContextHolder" /> <property name="targetMethod" value="setStrategyName" /> <property name="arguments" value="MODE_INHERITABLETHREADLOCAL" /> </bean>
매력처럼 일하고.
from https://stackoverflow.com/questions/3467918/how-to-set-up-spring-security-securitycontextholder-strategy by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 보안은 CSS 또는 JS 리소스를로드 할 수 없습니다 (0) | 2018.12.24 |
---|---|
[SPRING] Annotated 컨트롤러에 대한 Spring AOP 권고 (0) | 2018.12.24 |
[SPRING] 스프링 mvc를 사용하여 @RequestParam을 사용하여 여러 매개 변수를 캡처하는 방법? (0) | 2018.12.24 |
[SPRING] 서블릿에서의 Autowiring (0) | 2018.12.24 |
[SPRING] spring restTemplate을 사용한 REST API의 기본 인증 (0) | 2018.12.24 |