我不知道这是否可能,但如果我不问我永远不会知道:)
我有 exact problem discuted in this topic .那是:我在某些文件夹中有一些静态文件,我希望只有一些用户可以看到该内容。用户来自以前的登录。
该主题中讨论了一些可能的解决方案,但我想到了另一种可能的解决方案。如果我可以用 PHP 发送授权 HTTP header ,其中包含用户的用户名和密码,并在后续请求中保持它的持久性(因为我认为它发生在 apache 身份验证中)。我会在我之前的登录期间发送该 header ,然后当用户尝试访问其目录时,.htaccess 将检查他是否是有效用户。
我已尝试使用 PHP 发送授权 header :
header('Authorization: Basic '.base64_encode($USERNAME.':'.$PASSWORD).PHP_EOL);
但它们只针对一个请求出现。
在 .htaccess 中,我检查过不可能有一个唯一的“需要用户用户名”,所以我认为有必要创建一个 htpasswd 文件来存储与登录过程使用的凭据相同的凭据,然后创建一个常用的身份验证配置(基本或摘要):
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /path/to/htpasswd/file
Require user USERNAME
提前谢谢你
最佳答案
您可以让 Apache 处理基本或摘要式 HTTP 身份验证,并使用简单的“需要有效用户”。 没有 apache 可以实现很多 mod_auth 变体,请在 this page 中检查 mod_auth* . 所以你可以告诉apache authenticate on your database ,甚至使用您随 mod_authnz_external 提供的自定义代码执行身份验证.
外部脚本支持很好,因为您可以实现具有缓存级别的 session 身份验证(以防止为每个请求的资源重做整个身份验证),这基本上是基于默认 cookie 的 session 发生的(首先进行身份验证,然后传输 PHPSESSID,以便我们检查 session 是否存在)。
关于php - 如何使用 PHP 发送持久性 "Authorization" header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7559773/