受保护的 Apache Web 子目录两次要求输入密码

EMP*_*EMP 1 security permissions http .htaccess apache-2.2

我有一个带有密码保护的 web 目录的 Apache 服务器。该目录有一个子目录,需要另一个密码,但任何可以访问子目录的人也应该可以访问父目录。那是:

  • /stuff - 允许用户“stuff”和“admin”
  • /stuff/admin - 只允许用户“admin”

所以我在 Apache 配置中这样设置:

<Directory "/stuff">
   [AuthType Basic, AuthName, etc.]
   Require user stuff
   Require user admin
</Directory>

<Directory "/stuff/admin">
   [AuthType Basic, AuthName, etc.]
   Require user admin
</Directory>
Run Code Online (Sandbox Code Playgroud)

这在某种意义上是有效的,我可以浏览到 /stuff 并以“admin”或“stuff”身份登录。但是,/stuff/admin 中的页面引用了父目录中的一些图像。我发现当我直接浏览到 /stuff/admin 并以“admin”身份登录时,浏览器仍然提示我输入另一个密码来加载这些图像。(我知道这是 /stuff 的提示,因为 AuthName 值不同。)

我如何避免这种情况并允许有权访问 /stuff/admin 的用户只登录一次(作为“管理员”),而不是两次?

EMP*_*EMP 5

问题原来是两个目录的不同AuthName值。我认为它的唯一目的是向用户提供有意义的提示。再次阅读文档后,发现它有另一个目的:浏览器将自动为具有相同 AuthName 的目录尝试相同的凭据。

所以在我的情况下发生的事情是,在对/stuff/admin进行身份验证后,浏览器会请求/stuff/something-else,它会得到“401 Unauthorized”响应,但它甚至不会尝试相同的凭据。在我将 AuthName 更改为相同后,它通过使用我之前验证过的“admin”用户名重试自动响应 401,该用户名有效。