gpt4 book ai didi

spring - 如何从 ApplicationListener 方法获取 session 对象

转载 作者:行者123 更新时间:2023-12-02 19:47:59 26 4
gpt4 key购买 nike

我想在成功的用户身份验证后将对象添加到 HttpSession 请不要使用 SavedRequestAwareAuthenticationSuccessHandler 建议解决方案,因为在此应用中对于某些原因应用程序忽略原始请求。

public class AuthenticationSuccessListener implements ApplicationListener<InteractiveAuthenticationSuccessEvent> {
@Override
public void onApplicationEvent(InteractiveAuthenticationSuccessEvent e) {
//adding object to HttpSession
}
}

最佳答案

据我所知,ApplicationListener 实例只是 ApplicationContext 中的 bean。因此,您应该能够向其中注入(inject)其他 bean 或资源。

因此,要获取对当前 HttpSession 实例的引用:

public class AuthenticationSuccessListener implements ApplicationListener<InteractiveAuthenticationSuccessEvent> {

@Autowired
private HttpSession httpSession;

@Override
public void onApplicationEvent(InteractiveAuthenticationSuccessEvent e) {
//adding object to HttpSession
}
}

Spring 将使用其 scoped proxy mechanism 注入(inject) HttpSession确保您获得与当前执行线程相关的 HTTPSession

您还需要确保在 web.xml 中注册一个 RequestContextListener,以便 Spring 可以注入(inject)当前的 HTTPSession

<listener>  
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

关于spring - 如何从 ApplicationListener 方法获取 session 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19794115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com