1

我使用 Apache 添加了 HTTP 基本身份验证,以使用文件访问 PHP 应用程序.htaccess

AuthType Basic
AuthName "Secure Area"
AuthUserFile /path/to/.htpasswd
AuthGroupFile /dev/null
Require valid-user

除了管理面板之外,这对于大多数应用程序都可以正常工作。

因为为了访问管理面板,PHP 应用程序还通过将WWW-AuthenticateHTTP 标头发送到响应来提供自己的 HTTP 基本身份验证。

因此,当我尝试访问 PHP 应用程序安全区域时,看起来我遇到了 Apache 和 PHP 之间的 HTTP Basic 身份验证冲突。(两者都单独正常工作)

我正在考虑的解决方案是仅在请求的页面尚未发送WWW-Authenticate.

我试过这个没有成功:

AuthType Basic
AuthName "Secure Area"
AuthUserFile /path/to/.htpasswd
AuthGroupFile /dev/null
<RequireAll>
  Require valid-user
  Require expr %{HTTP:WWW-Authenticate} =~ m#^$#
</RequireAll>

这导致尝试进行身份验证的请求无限循环。有可能吗?

4

1 回答 1

1

我认为这行不通。添加 Apache 的身份验证方法时,除非您进行身份验证,否则请求将停止。如果 Apache 没有收到其自身层的身份验证详细信息,则您的 PHP 应用程序不会以任何方式运行。

于 2020-05-24T07:54:08.207 回答