代码之家  ›  专栏  ›  技术社区  ›  ekhaled

对JSON Web服务中的用户进行身份验证和跟踪

  •  2
  • ekhaled  · 技术社区  · 16 年前

    我公司内部使用了联系人管理/CRM应用程序,它是一个基于Web的应用程序,因此使用了大量的Ajax。大部分数据是json,后端服务器使用php,数据库是mysql…

    我想建立一个小型的AdobeAir版本,主要是因为我可以使用拖放文件上传,客户端图像大小调整,客户端屏幕截图创建上传的文件等。

    现在,由于服务器端是一个光荣的JSON数据提供者,我想我可以对它进行调整以向Air应用程序提供数据。

    我的问题是,如何处理身份验证?
    在PHP中,我使用会话进行身份验证…
    对于air,我认为它更像是一个JSONWebservice,在这里您调用一个特定的URL来访问特定的JSON数据。

    经过一番脑力激荡,我想到了:

    1. 用户在Air应用程序启动时登录
    2. 服务器在成功登录时返回一个唯一的令牌,并将该令牌存储在数据库中
    3. Air应用程序必须在向服务器发出的每个请求中附加该令牌。
    4. 对于每个请求,服务器都会通过将令牌与存储在数据库中的令牌进行比较来检查令牌的有效性。

    问题是,
    有比这更好的方法吗?
    令牌的有效期应该是多长?
    如何处理那些在不注销应用程序的情况下关闭应用程序,并且不给我在服务器上取消令牌的机会的客户机?

    如果有人遇到过类似的情况,我希望你的回答能给我启发…

    谢谢

    1 回复  |  直到 16 年前
        1
  •  4
  •   mauris    16 年前

    这个怎么样?

    1. 只需在验证后将JSON数据中的PHP会话ID返回到air应用程序
    2. 您的Air应用程序存储会话ID并将其用于该会话中的请求。
    3. 当您的PHP接收到会话ID为的请求时,将其设置为该会话ID:
    4. 您的会话将很容易由PHP维护,并且您将能够按正常方式使用$_会话。

    当您收到会话ID为的请求时,只需执行以下操作:

    if(isset($_GET['sess_id'])){
      session_id($_GET['sess_id']);
      // where $_GET['sess_id'] is where you put the Session ID stored in your AIR APP
    }
    

    这可能更好,因为您不再需要在数据库中维护会话。