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

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

  • /东西 – 用户“东西”和“pipe理”允许
  • / stuff / admin – 只允许用户“admin”

所以我在Apacheconfiguration中这样设置:

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

这个作品的意思是我可以浏览到/东西,并以“pipe理员”或“东西”login。 但是,/ stuff / admin中的页面会引用父目录中的一些图像。 我发现,当我直接浏览到/东西/pipe理和login作为“pipe理”浏览器仍然提示我另一个密码来加载这些图像。 (我知道这是/ stuff的提示,因为AuthName的值是不同的。)

如何避免这种情况,并允许有权访问/ stuff / admin的用户只login一次(如“admin”),而不是两次?

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

所以在我的情况发生了什么事情是,经过身份validation/东西/pipe理浏览器会要求/东西/其他 ,它会得到一个“401未经授权”的回应,但它甚至不会尝试相同的凭据。 在我将AuthName改为相同之后,它会自动响应401,并重新尝试使用之前validation过的“admin”用户名。

你有没有尝试颠倒你的htaccess中的节的顺序,以便更具体的情况是第一? 这可能会影响匹配并解决您的双重提示问题。

另一件要检查的是,如果你可以使用领域或组来简化,也许指定多个容器使用相同的authentication后端。

这个(AAA)在Apache和Apache2之间是不同的,所以请检查一下你有没有。 这里有两套文档:

http://httpd.apache.org/docs/1.3/howto/auth.html http://httpd.apache.org/docs/2.2/howto/auth.html

心连心,

adric

我还没有尝试过,但它会工作改变他们都需要有效的用户,并指出pipe理.htaccess到一个组.htpasswd文件是pipe理子集和基本目录.htaccess到.htpasswd文件与更大的超集?

我相信,当你在单独的行上列出的东西有一个暗示的“和”。 尝试在同一行上列出隐含的“或”的用户:

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