如何在 AuthenticationSuccessHandler 中检索会话范围的 bean?
我有一个自定义的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以尝试声明一个监听器,该监听器公开实现会话范围所需的状态:
默认情况下,该状态由 DispatcherServlet 公开,因此在请求进入 DispatcherServlet 之前它不可用(例如,在Spring Security 过滤器)。
You can try to declare a listener that exposes state necessary to implement session scope:
By default that state is exposed by
DispatcherServlet
, so it's not available before request entersDispatcherServlet
(e.g. in Spring Security filters).