php - 在 JSON Web 服务中验证和跟踪用户

标签 php authentication web-services air token

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

我想构建一个迷你 Adob​​e Air 版本,主要是因为我可以使用拖放文件上传、客户端图像大小调整、上传文件的客户端屏幕截图创建等。

现在,因为服务器端是一个美化的 JSON 数据提供程序,我想我可以对其进行调整以向 AIR 应用程序提供数据。

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

经过一番集思广益,我得出了以下结论:

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

问题是,
还有比这更好的方法吗?
token 的有效期应为多长时间?
如何处理在不注销的情况下关闭应用程序的客户端,并且不给我机会使服务器上的 token 失效?

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

谢谢

最佳答案

这个怎么样:

  1. 只需在身份验证后将 JSON 数据中的 PHP session ID 返回到 AIR 应用程序
  2. 您的 AIR 应用程序存储 session ID 并将其用于该 session 中的请求
  3. 当您的 PHP 收到带有 session ID 的请求时,将其设置为该 session ID:
  4. 您的 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/

相关文章:

javascript - 无法接收目标文件 Typeahead.js 中的值

authentication - NET Core 反向代理和身份验证中间件

java - ContainerRequestFilter 方法未被调用

java - 如何将 pojo 对象作为参数传递给来自 prototypejs 客户端的 REST Web 服务

java - Base64 编码基本身份验证 header Apache HTTP 客户端

java - 简单的 JAX-RS 应用程序在部署到 Wildfly 8 时抛出 UnsupportedOperationException

php - 如何为使用 php 创建的新文件设置默认权限

javascript - 在输入文本中搜索然后搜索结果将使用 Ajax PHP 出现在下拉列表中

php - 这个 foreach 语句有什么问题?

python - Django Rest 框架 JWT "Authentication credentials were not provided."}