我有我们公司内部使用的联系人管理/CRM 应用程序,它是一个基于 Web 的应用程序,因此使用了大量 Ajax。大部分数据是JSON,后端服务器使用PHP和MySQL作为数据库...
我想构建一个迷你 Adobe Air 版本,主要是因为我可以使用拖放文件上传、客户端图像大小调整、上传文件的客户端屏幕截图创建等。
现在,因为服务器端是一个美化的 JSON 数据提供程序,我想我可以对其进行调整以向 AIR 应用程序提供数据。
我的问题是,如何处理身份验证?
在 PHP 中,我使用 session 进行身份验证...
对于 AIR,我认为它更像是一个 JSON Web 服务,您可以在其中调用某个 URL 来访问某些 JSON 数据。
经过一番集思广益,我得出了以下结论:
- 用户在 AIR 应用程序启动时登录
- 服务器在成功登录时返回唯一 token ,并将该 token 存储在数据库中
- AIR 应用程序必须将该 token 附加到它向服务器发出的每个请求
- 对于每个请求,服务器都会通过将 token 与数据库中存储的 token 进行比较来检查 token 的有效性。
问题是,
还有比这更好的方法吗?
token 的有效期应为多长时间?
如何处理在不注销的情况下关闭应用程序的客户端,并且不给我机会使服务器上的 token 失效?
如果有人遇到过类似的情况,希望您的回答能给我启发......
谢谢
最佳答案
这个怎么样:
- 只需在身份验证后将 JSON 数据中的 PHP session ID 返回到 AIR 应用程序
- 您的 AIR 应用程序存储 session ID 并将其用于该 session 中的请求
- 当您的 PHP 收到带有 session ID 的请求时,将其设置为该 session ID:
- 您的 session 将通过 PHP 轻松维护,并且您将能够正常使用 $_SESSION。
当您收到带有 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
}
这可能会更好,因为您不再需要在数据库中维护 session 。
关于php - 在 JSON Web 服务中验证和跟踪用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1752488/