2011-09-26 24 views
3

我不知道这是否是可能的,但如果我不问,我永远不会知道:)如何发送那种执着“授权”头用PHP

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

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

我试图用PHP与发送授权头:

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 

预先感谢您

+1

http://php.net/manual/en/features.http-auth.php – hakre

+0

我看过了,但是我没有找到答案 –

回答

1

你可以有被Apache处理的基本或Digest HTTP认证,用一个简单的“需要有效的用户”。 没有apache可以实现很多mod_auth变体,请检查this page中的mod_auth *。 所以你可以告诉Apache到authenticate on your database,甚至用你提供的自定义代码mod_authnz_external进行认证。

外部脚本的支持是好的,你可以实现一个高速缓存级别一个会话认证(防止重做整个认证每个请求的资源),这是基本上是与默认的基于Cookie的会话发生(第一身份验证,那么只需传输PHPSESSID,我们将检查会话是否存在)。

0

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

你不能

+0

哦,好的,活着就是:) –

相关问题