如何从ApplicationListener方法获取会话对象
请不要提出解决方案,SavedRequestAwareAuthenticationSuccessHandler
因为在此应用中由于某种原因应用正在忽略原始请求。
public class AuthenticationSuccessListener implements ApplicationListener<InteractiveAuthenticationSuccessEvent> { @Override
public void onApplicationEvent(InteractiveAuthenticationSuccessEvent e) {
//adding object to HttpSession
}
}
回答:
据我所知,ApplicationListener
实例只是您中的bean
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
与当前执行线程相关。
您还需要确保RequestContextListener
在web.xml中注册一个,以便Spring可以注入当前的HTTPSession
。
<listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
以上是 如何从ApplicationListener方法获取会话对象 的全部内容, 来源链接: utcz.com/qa/425985.html