【问题标题】:how to logout from front end when the session times out from backend?当会话从后端超时时如何从前端注销?
【发布时间】:2013-12-05 07:43:11
【问题描述】:

我使用 Slim Framework 作为后端,Backbone.js 作为前端框架。创建该应用程序是为了允许用户提交表单,当他们提交表单时,他们将收到包含某些数据的邮件/pdf 收据,其执行如下所述:

  • 用户访问网站要求收据。
  • 网站要求他们登录
  • 一旦他们这样做了,他们的详细信息(用户名、电子邮件等)就会存储在会话中。
  • 当他们通过 api 调用使用 Backbone.js/Front-end 提交表单时,会收到数据并生成收据。
  • 在生成收据时使用存储在会话中的详细信息(用户名、电子邮件)。
  • 完成后,将邮寄收据。

问题场景:

用户登录,并在填写表单的一些详细信息后让应用程序打开很长时间。服务器端会话超时,但前端保持不变。然后用户回来填写表格的其余部分。但是,由于会话已超时,后台设置的变量(用户名、电子邮件)返回 null,应用程序要么失败,要么无法按预期工作。

我想通知用户会话到期,如果没有响应,请从前端注销。此外,如果用户关闭浏览器/选项卡,我希望他们的会话注销。

【问题讨论】:

    标签: javascript php mysql backbone.js slim


    【解决方案1】:

    您只需要一个客户端 javascript 来检查用户是否仍在几秒钟内登录,如果他/她仍然登录,您的服务器端也必须发送给客户端。

    function checkIfLogin(){
     Backbone.ajax({
        dataType: "jsonp",
        url: "URL HERE",
        data: "", // if you have data
        success: function(data){
          if(!data.isStillLogin){
            // statement if not login
          }else{
            // call again the checker
            setTimeout(checkIfLogin, 10000); 
          }
        }
     });
    }
    checkIfLogin();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 2023-03-31
      • 2023-03-14
      • 2013-11-16
      • 1970-01-01
      相关资源
      最近更新 更多