如何使用PHP发送一种持久的“授权”头

时间:2011-09-26 18:48:12

标签: php apache .htaccess authentication

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

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

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

我尝试使用PHP发送Authorization标头:

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

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

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

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

提前谢谢

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

  

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

你不能