【问题标题】:PHP API authentication and sessionsPHP API 身份验证和会话
【发布时间】:2023-03-14 03:04:01
【问题描述】:

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

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

假设 API 请求通过了正确的身份验证,是否可以接受:

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

这意味着每次 API 调用都会实例化会话,然后立即刷新。这个可以吗?还是我们应该考虑其他替代方案?

【问题讨论】:

  • 你是对的,API 应该是无状态的,如果可能的话不要使用会话/cookies。但这很容易做到,没问题。但是,您应该重新使用现有的身份验证框架,因为它确实很复杂。例如,看一下github.com/delight-im/PHP-Auth,它既与框架无关,也与数据库无关。然后在每个请求中发送凭据并在服务器上 (1) 登录,(2) 执行实际工作,最后 (3) 再次注销。

标签: php api session authentication


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 2013-04-03
    • 2019-05-17
    • 2010-12-02
    • 2016-02-22
    • 2011-10-09
    相关资源
    最近更新 更多