2009-11-17 86 views
2

我有我们公司内部使用的联系人管理/ CRM应用程序,它是一个基于Web的应用程序,因此使用了大量的Ajax。大部分数据是JSON,而后端服务器使用PHP和MySQL作为数据库...在JSON Web服务中验证和跟踪用户

我想构建一个迷你Adobe Air版本,主要是因为我可以使用拖放文件上传,客户端上传文件等的客户端截图创建等。

现在,因为服务器端是一个荣耀的JSON数据提供者,我想我可以调整它以向AIR应用程序提供数据。

我的问题是,我如何处理身份验证?
在PHP中,我使用会话进行身份验证......
对于AIR,我认为它更像是一个JSON webservice,您可以在其中调用特定的URL来访问某些JSON数据。

有点头脑风暴之后,这里是我想出了:当AIR应用程序启动

  • 服务器返回的登录成功的唯一令牌

    1. 用户登录,并存储该令牌在DB
    2. AIR应用程序必须追加该令牌每一个要求它向服务器
    3. 在每一个请求,服务器通过比较存储在数据库中的一个检查令牌的有效性。

    问题是,
    有没有比这更好的方法?
    令牌应该有效多久?
    我如何处理关闭应用程序而不注销并且不给我机会使服务器上的令牌无效的客户端?

    如果有人已经在类似的情况,我希望通过你的答案被启发......

    感谢

  • +1

    +1 @thephpdeveloper,但是如果你还想进入令牌,有一种方法可以在窗口上触发一个事件。close(),你也可以运行一个方法来检查数据库中所有活动标记的状态,从而清除一个不活动超过X分钟的方法。 但使用会话ID肯定更容易! – Tom 2009-11-18 00:36:21

    回答

    4

    如何:

    1. 简单地返回在PHP会话ID将JSON数据发送到AIR应用程序
    2. 您的AIR应用程序存储会话ID并将其用于该会话中的请求
    3. 何时您的PHP接收到会话ID请求,并将其设置为该会话ID:
    4. 您的会话将由PHP轻松维护,您将能够按照常规使用$ _SESSION。

    当您收到会话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 
    } 
    

    ,因为你把维护数据库会话的需要,这可能是更好的。