【问题标题】:Getting different sessions from httpServletrequest and DWR httpServletrequest从 httpServletrequest 和 DWR httpServletrequest 获取不同的会话
【发布时间】:2017-07-24 10:05:50
【问题描述】:

我正在开发一个遗留应用程序,

当用户登录时请求进入过滤器并在验证后将被重定向到主页。之后,每当用户点击任何链接时,都会验证用户是否是使用 DWR 的管理员用户。

问题是当我们从

获取会话时,我们得到了不同的会话
httpServletrequest.getSession(true);

和

WebContextFactory.get().getHttpServletRequest().getSession();

因此,当我们尝试从会话中获取用户详细信息时,我们会在会话中得到空值,而我们从 DWR 中得到的结果。

如何使用 DWR 获取在 httpServletrequest 中创建的相同会话。

【问题讨论】:

    标签: java servlets dwr


    【解决方案1】:

    根据this page:

    当您在 DWR 线程中时使用 WebContext。它使用 ThreadLocal 变量将您连接到正在运行的容器。

    当您调用 WebContextFactory.get() 时,您是否在 DWR 线程中?

    或者,您可以在远程方法对象的参数列表中包含 servlet 对象。

    DWR 不会将它包含在生成的存根中,并且在调用方法时它会自动填充它。

    我是这样做的,而且效果很好。我得到了与标准请求相同的会话。

    public class Remote {
        public void method(int param, HttpSession httpSession) { ... }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-12-08
      • 2018-02-07
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 2019-03-29
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多