Назад | Перейти на главную страницу

Защищенный веб-подкаталог Apache дважды запрашивает пароль

У меня есть сервер Apache с защищенным паролем веб-каталогом. В этом каталоге есть подкаталог, для которого требуется другой пароль, но любой, кто может получить доступ к подкаталогу, также должен иметь доступ к родительскому каталогу. То есть:

Итак, я установил это в конфигурации 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>

Это работает в том смысле, что я могу перейти к / stuff и войти в систему как «admin» или «stuff». Однако страницы в / stuff / admin ссылаются на некоторые изображения из родительского каталога. Я обнаружил, что когда я перехожу прямо к / stuff / admin и вхожу в систему как «admin», браузер все равно запрашивает у меня другой пароль для загрузки этих изображений. (Я знаю, что это приглашение для / stuff, потому что значение AuthName другое.)

Как мне избежать этого и позволить пользователю, имеющему доступ к / stuff / admin, войти в систему только один раз (как «admin»), а не дважды?

Проблема оказалась в другом AuthName значение для двух каталогов. Я думал, что его единственная цель - предоставить пользователю содержательную подсказку. Прочитав документация опять же, оказывается, что у него другая цель: браузер автоматически пробует те же учетные данные для каталогов с тем же AuthName.

Итак, в моем случае произошло следующее: после аутентификации / stuff / admin браузер запросит / вещи / что-то еще, он получит ответ «401 Unauthorized», но даже не будет пытаться использовать те же учетные данные. После того, как я изменил AuthName на то же самое, он автоматически ответил на 401, повторив попытку с именем пользователя «admin», с которым я ранее аутентифицировался, что сработало.

Вы пытались изменить порядок строф в вашем htaccess, чтобы сначала был конкретный случай? Это может повлиять на сопоставление и решить вашу проблему с двойным запросом.

Еще нужно проверить, можете ли вы использовать Realms или Groups для упрощения, например, чтобы указать, что несколько контейнеров используют один и тот же сервер аутентификации.

Это (AAA) отличается между Apache и Apache2, поэтому проверьте, что у вас есть. Вот оба набора документов:

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

hth,

Адрик

Я считаю, что когда вы перечисляете вещи в отдельные строки, есть подразумеваемое «и». Попробуйте перечислить пользователей в той же строке для подразумеваемого «или»:

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

Я не пробовал, но сработает ли изменить их оба, чтобы требовать действительного пользователя и указать admin .htaccess на файл группы .htpasswd, который был подмножеством admin, и базовый каталог .htaccess на файл .htpasswd с больший суперсет?