php - 如何使用 PHP 发送持久性 "Authorization" header

标签 php apache .htaccess authentication

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

我有 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/

相关文章:

php - Ubuntu 14.04 服务器 : Apache2 issue with phpMyAdmin

php - 有效运行多个 Web/PHP 应用程序

apache - .htaccess 中的 DocumentRoot 导致错误

PHP,需要从 DateTime 中减去 12 小时 30 分钟

php - 如何使用 PHP 查找特定字符

php - 按下按钮时尝试发送主键值以编辑数据

php - 从特定类别 codeigniter 中选择产品

php - 从 URL Wordpress 中删除目录名称

linux - 使用 mod_rewrite 在某些页面上从强制 SSL 切换回来时出现问题

git - 是否可以为每个 Remote 设置单独的 git ignore 规则?