如何使用AJAX请求检测会话超时?

时间:2013-10-26 20:10:04

标签: jquery ajax jsf-2 richfaces

场合

  • 用户正在使用JSF 2.1和Richfaces 4.3.4 Web应用程序
  • 用户决定休息一下
  • 管理员重新启动Web服务器
  • 用户返回并希望执行操作(实现为AJAX请求)

问题:什么都没发生。

AJAX响应:

<?xml version='1.0' encoding='UTF-8'?>
<partial-response>
  <changes>
    <update id="javax.faces.ViewState">
      <![CDATA[867555705194888199:-2060396069426176324]]>
    </update>
  </changes>
</partial-response>

会发生什么:转发到登录页面。

由于会话不再可用,因此整页请求会重定向到登录页面。 使用AJAX技术在Web应用程序(Richfaces / JSF / jQuery)中实现会话超时处理的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

最佳用户体验是要求用户再次登录,建立新的登录会话并在用户最后一次在浏览器中的位置继续返回。

这需要以保存用户在浏览器中的位置的方式进行登录,例如通过可以变为可见的登录覆盖(在当前页面上),通过ajax执行此操作然后在成功时离开,留下用户他们在哪里(还有其他方法)。

但是,所有这些都取决于您希望为此特定案例投入多少时间来体验用户体验。如果您认为这种情况很少并且用户可能拥有的未保存状态很低,那么您可以将它们添加到登录页面并让它们开始会话。如果它经常发生或者如果用户有许多未保存的状态他们不想丢失,那么你将需要投资一种机制让他们再次登录而不会丢失该状态。

如果您要问的是如何在客户端编写会话中的代码,那将取决于您的服务器在收到带有无效或过期会话的请求时返回到ajax调用的内容。根据服务器返回的行为,您需要确保在ajax处理中可以处理该行为。如果是错误,那么您需要处理错误条件。如果它是某种类型的有效ajax响应,则需要确保处理该问题。

如果在ajax调用会话无效时,您已经从服务器的ajax调用产生了已知的错误返回条件,那么您只需要修复客户端代码以检测该情况。我们必须查看错误条件是什么,并查看客户端ajax代码以了解具体建议。