PHP API身份验证和会话


PHP API authentication and sessions

我有一个PHP应用程序,它广泛依赖于会话。我们现在正在考虑为我们的用户构建一个API。我们最初的想法是,用户需要使用他们的电子邮件地址、密码和api密钥(每个用户都是唯一的)对api进行身份验证。

然而,由于当前的应用程序(包括模型)广泛依赖于用户会话,我不确定最佳方法。

假设API请求被正确地验证,那么它是否可以被接受:

  • 用户通过身份验证后,启动API调用的会话
  • 运行模型并向用户返回json/xml
  • 终止会话

这意味着为每个API调用实例化会话,然后立即刷新。这样可以吗?还是我们应该考虑其他选择?

在我创建API的经验中,我发现会话最好只持续一个请求,并在每个执行周期中重新创建会话信息。

如果你的会话实例化很重要,这显然会带来开销,但如果你只是根据数据库检查凭据,那应该没问题。此外,您应该能够基于用户标识符而不是会话将任何繁重的工作缓存在类似APC或memcache的东西中,从而减少重新创建会话所需的工作,同时确保在每个请求中验证身份验证。