如何发送持久的“授权”头文件与PHP


How to send kind of persistent "Authorization" headers with PHP

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

我有这个主题讨论的确切问题。也就是说,我在某些文件夹中有一些静态文件,我只希望某些用户看到这些内容。

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

我试图用PHP发送授权头:

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

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

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

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

提前感谢

你可以有一个基本或摘要HTTP身份验证由Apache处理,与一个简单的"需要有效的用户"。没有apache可以实现很多mod_auth的变化,在本页检查mod_auth*。因此,您可以告诉apache在您的数据库上进行身份验证,或者甚至使用您在mod_authnz_external中提供的自定义代码执行身份验证。

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

我已经想到了另一个可能的解决方案。如果我可以用PHP发送授权HTTP头,
你不能