代码之家  ›  专栏  ›  技术社区  ›  mplungjan Gvidas

如何确定在爪哇中没有会话的陈旧会话

  •  0
  • mplungjan Gvidas  · 技术社区  · 14 年前

    我们有一个网站,用户可以在其中获得一个导航栏,以允许搜索结果的导航。

    当用户外出吃午饭或其他什么时候,会话超时时,单击导航中仍在屏幕上的“下一步”将显示下一页,但随后将丢失导航,因为它存储在现在过时的会话中。这让人困惑不已。

    我们提出的解决方案是创建一个新的会话,将用户返回到结果的开始处,并向他们显示一条消息,说明他们在没有会话的情况下访问我们,并且我们已将他们发送回开始处。

    现在,我们收到来自直接链接到页面的外部人员的投诉。由于我们目前看不到过时会话和不存在会话之间的区别,因此我们向所有没有(有效)会话的人显示消息。

    我们如何能够可靠地检测到从未进行过会话/故意删除会话cookie的访问者与在会话超时后离开并返回的访问者?

    谢谢

    1 回复  |  直到 14 年前
        1
  •  0
  •   Tushar Tarkas    14 年前

    如果您正在代码中进行会话验证,那么直接通过指向页面的链接访问的人在请求头或存储会话参数的任何位置都不会具有会话属性。如果没有这样做,那么对于所有与服务器进行创建会话的客户机,发送一个参数。使此参数在每个请求中流动。这样的参数的存在将确保某人是否来自过时的会话或根本没有任何会话。

    检查 getHeader 来自HttpServletRequest类的方法。这将帮助您检查给定的头是否存在。