Java 如何在AuthenticationSuccessHandler中检索会话范围的bean?
我有一个自定义AuthenticationSuccessHandler 我想做的是在onAuthenticationSuccess方法中设置一些会话数据 为了存储会话数据,我想使用会话范围的bean,它在任何控制器中都可以正常工作 但如果我尝试在onAuthenticationSuccess方法中检索它,我会得到一个异常: 创建名为的bean时出错 “scopedTarget.sessionData”:作用域 “会话”未在服务器上处于活动状态 当前线程 我的代码是:Java 如何在AuthenticationSuccessHandler中检索会话范围的bean?,java,spring,spring-mvc,dependency-injection,session-scope,Java,Spring,Spring Mvc,Dependency Injection,Session Scope,我有一个自定义AuthenticationSuccessHandler 我想做的是在onAuthenticationSuccess方法中设置一些会话数据 为了存储会话数据,我想使用会话范围的bean,它在任何控制器中都可以正常工作 但如果我尝试在onAuthenticationSuccess方法中检索它,我会得到一个异常: 创建名为的bean时出错 “scopedTarget.sessionData”:作用域 “会话”未在服务器上处于活动状态 当前线程 我的代码是: WebApplication
WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());
SessionData sessionData = context.getBean(SessionData.class);
有什么想法吗?您可以尝试声明一个侦听器,该侦听器公开实现会话作用域所需的状态:
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
org.springframework.web.context.request.RequestContextListener
默认情况下,该状态由DispatcherServlet
公开,因此在请求进入DispatcherServlet
之前,该状态不可用(例如,在Spring安全过滤器中)