【问题标题】:How to send kind of persistent "Authorization" headers with PHP如何使用 PHP 发送某种持久的“授权”标头
【发布时间】:2011-11-25 11:07:30
【问题描述】:

我不知道这是否可能,但如果我不问我永远不会知道:)

我有exact problem discuted in this topic。那就是:我在一些文件夹中有一些静态文件,我希望只有一些用户可以看到这些内容。用户来自以前的登录。

该主题中讨论了一些可能的解决方案,但我想到了另一种可能的解决方案。如果我可以使用 PHP 发送授权 HTTP 标头,其中包含用户的用户名和密码,并在后续请求中保持它的持久性(因为我认为它发生在 apache 身份验证中)。我会在我上次登录时发送该标头,然后当用户尝试访问其目录时,.htaccess 将检查他是否是有效用户。

我尝试使用 PHP 发送授权标头:

header('Authorization: Basic '.base64_encode($USERNAME.':'.$PASSWORD).PHP_EOL);

但它们只出现在一个请求中。

在 .htaccess 中,我检查了不可能有一个唯一的“需要用户 USERNAME”,所以我认为有必要创建一个 htpasswd 文件来存储与登录过程使用的凭据相同的凭据,然后创建一个常用的身份验证配置(基本或摘要):

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /path/to/htpasswd/file
Require user USERNAME

提前谢谢你

【问题讨论】:

标签: php apache .htaccess authentication


【解决方案1】:

您可以使用简单的“需要有效用户”来处理由 Apache 处理的基本或摘要 HTTP 身份验证。 没有 apache 可以实现很多 mod_auth 变体,请检查 this page 中的 mod_auth*。 因此,您可以将 apache 告知authenticate on your database,甚至可以使用您通过mod_authnz_external 提供的自定义代码执行身份验证。

外部脚本支持很好,因为您可以实现 具有缓存级别的会话身份验证(以防止对每个请求的资源重做整个身份验证),这基本上是默认基于 cookie 的会话所发生的(首先进行身份验证,然后只是传输 PHPSESSID,因此我们将检查会话是否存在)。

【讨论】:

    【解决方案2】:

    我想到了另一种可能的解决方案。如果我可以使用 PHP 发送 Authorization HTTP 标头,

    你不能

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-29
      • 2019-07-03
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 2015-04-25
      • 2012-04-24
      相关资源
      最近更新 更多