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

发布于 2024-10-25 10:13:12 字数 553 浏览 5 评论 0原文

我有一个自定义的 AuthenticationSuccessHandler。

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

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

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

使用名称创建 bean 时出错 'scopedTarget.sessionData':范围 “会话”未处于活动状态 当前线程;

我的代码是:

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

有什么想法吗?

I have a custom AuthenticationSuccessHandler.

What I want to do is to set some session data within onAuthenticationSuccess method.

To store session data I want to use a session-scoped bean, which works fine within any controller.

But if I try to retrieve it within onAuthenticationSuccess method, I get an exception:

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

My code is:

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

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

§普罗旺斯的薰衣草 2024-11-01 10:13:12

您可以尝试声明一个监听器,该监听器公开实现会话范围所需的状态:

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

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

You can try to declare a listener that exposes state necessary to implement session scope:

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

By default that state is exposed by DispatcherServlet, so it's not available before request enters DispatcherServlet (e.g. in Spring Security filters).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文