[SPRING] ApplicationListener 메서드에서 세션 객체를 가져 오는 방법
SPRINGApplicationListener 메서드에서 세션 객체를 가져 오는 방법
나는 성공적인 사용자 인증 후 HttpSession에 객체를 추가하려고합니다. 이 응용 프로그램에서 어떤 이유로 응용 프로그램이 원래 요청을하고 있기 때문에 SavedRequestAwareAuthenticationSuccessHandler를 사용하여 솔루션을 제안하지 마십시오.
public class AuthenticationSuccessListener implements ApplicationListener<InteractiveAuthenticationSuccessEvent> {
@Override
public void onApplicationEvent(InteractiveAuthenticationSuccessEvent e) {
//adding object to HttpSession
}
}
해결법
-
==============================
1.내가 아는 한, ApplicationListener 인스턴스는 ApplicationContext 내의 bean입니다. 따라서 다른 빈이나 리소스를 주입 할 수 있어야합니다.
내가 아는 한, ApplicationListener 인스턴스는 ApplicationContext 내의 bean입니다. 따라서 다른 빈이나 리소스를 주입 할 수 있어야합니다.
그래서 현재의 HttpSession 인스턴스에 대한 참조를 얻으려면 :
public class AuthenticationSuccessListener implements ApplicationListener<InteractiveAuthenticationSuccessEvent> { @Autowired private HttpSession httpSession; @Override public void onApplicationEvent(InteractiveAuthenticationSuccessEvent e) { //adding object to HttpSession } }
Spring은 범위가 지정된 프록시 메커니즘을 사용하여 HttpSession을 주입하여 HTTPSession을 현재 실행 스레드와 관련되게합니다.
또한 Spring이 현재 HTTPSession을 주입 할 수 있도록 web.xml에 RequestContextListener를 등록해야합니다.
<listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener>
from https://stackoverflow.com/questions/19794115/how-i-can-get-session-object-from-applicationlistener-method by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Liferay를 사용하여 REST 서비스에서 인증 및 권한 부여 (0) | 2019.02.15 |
---|---|
[SPRING] Spring은 파일 확장자를 무시하지 않는다. (0) | 2019.02.15 |
[SPRING] 스프링 부트 프로파일을 사용하는 방법 (0) | 2019.02.15 |
[SPRING] 스프링 부트 스타터 데이터 휴식, @Notnull 제약 조건이 작동하지 않음 (0) | 2019.02.15 |
[SPRING] 스프링 및 크로스 컨텍스트 : WebAsyncManager를 WebAsyncManager에 캐스팅 할 수 없습니다. (0) | 2019.02.15 |