在 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 身份验证用户名?的主要内容,如果未能解决你的问题,请参考以下文章

php curl - 使用 http 身份验证访问 url(需要帮助)

使用 PHP 将用户名放在 apache access_log 中,但不使用 HTTP 身份验证

如何在 PHP 和 Apache 中启动服务器用户身份验证?

在查询字符串中嵌入用于 HTTP 基本访问身份验证的用户 + 密码数据

如何在 PHP 中使用基本 HTTP 身份验证?

如何允许任何用户使用 Laravel JWT 身份验证访问路由?