在 PHP 中访问 HTTP 身份验证用户名?

Posted

技术标签:

【中文标题】在 PHP 中访问 HTTP 身份验证用户名?【英文标题】:Access HTTP authentication username in PHP? 【发布时间】:2015-09-25 10:06:07 【问题描述】:

是否可以在 php 中访问通过服务器的本机 HTTP 摘要身份验证进行身份验证的用户的登录名(因为完全反对同一 HTTP 身份验证协议的 PHP 实现)?

【问题讨论】:

【参考方案1】:

客户端发送的HTTP标头中提供了您要的数据(根据https://www.rfc-editor.org/rfc/rfc2617),即标头Authorization

在 PHP 中,可以像这样检索这个标头:

$header = $_SERVER['HTTP_AUTHORIZATION'];

标头包含许多用逗号分隔的键值对。用户名在username 键中,您可以通过以下方式提取:

preg_match('/username="([^"]+)"/', $header, $matches);
$username = $matches[1];

【讨论】:

谢谢,我在此期间想通了(仍然接受)。令人困惑的因素是我错误地认为摘要身份验证是为文档根目录设置的,而它只是为子目录设置的。我正在处理的组件位于另一个子目录中,显然没有获得授权标头。

以上是关于在 PHP 中访问 HTTP 身份验证用户名?的主要内容,如果未能解决你的问题,请参考以下文章