当前位置 : 主页 > 网络推广 > seo >

如何在AuthenticationSuccessHandler中检索会话范围的bean?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我有一个自定义AuthenticationSuccessHandler. 我想要做的是在onAuthenticationSuccess方法中设置一些会话数据. 要存储会话数据,我想使用会话范围的bean,它可以在任何控制器中正常工作. 但是如果我
我有一个自定义AuthenticationSuccessHandler.

我想要做的是在onAuthenticationSuccess方法中设置一些会话数据.

要存储会话数据,我想使用会话范围的bean,它可以在任何控制器中正常工作.

但是如果我尝试在onAuthenticationSuccess方法中检索它,我会得到一个异常:

Error creating bean with name
‘scopedTarget.sessionData’: Scope
‘session’ is not active for the
current thread;

我的代码是:

WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());
SessionData sessionData = context.getBean(SessionData.class);

有任何想法吗?

您可以尝试声明一个暴露实现会话范围所必需的状态的侦听器:

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

默认情况下,DispatcherServlet公开该状态,因此在请求进入DispatcherServlet之前它不可用(例如在Spring Security过滤器中).

网友评论