Директива Satisfy принимает два значения:
Satisfy Any
Пропускает запрос, если выполнено любое из требований (идентификация или проверка доступа).Satisfy All
Пропускает запрос, только если оба требования выполнены (и идентификация и проверка доступа).Для примера возьмем следующий сценарий:
<Directory /home/www/site1/private>
AuthUserFile /home/www/site1-passwd
AuthType Basic
AuthName MySite
Require valid-user
</Directory>
При такой конфигурации вашим пользователям необходимо будет пройти процедуру идентификации.
Но предположим, вы хотите, чтобы пользователи из локальной сети имели полный доступ к каталогу, без необходимости ввода пароля. Для такого сценария необходимо использовать следующую конфигурацию:
<Directory /home/www/site1/private>
AuthUserFile /home/www/site1-passwd
AuthType Basic
AuthName MySite
Require valid-user
Order allow, deny
Allow from 172.17.10
Satisfy any
</Directory>
Такая конфигурация заставит всех "внешних" пользователей пройти процедуру идентификации, а тех, кто пришел с локальной сети, пропустит. Apache предоставит им полный доступ к каталогу private без идентификации.
Все вышеописанное также работает и с подкаталогами вашего защищенного каталога. Допустим, вам нужен незакрытый подкаталог nonprotect, который находится в каталоге private. Причем к каталогу nonprotect должен иметь доступ любой пользователь без ввода какого-либо пароля. Делается это следующим образом:
<Directory /home/www/site1/private/nonprotect>
Order allow,deny
Allow from all
Satisfy any
</Directory>
И, наконец, если у вас есть очень секретный каталог, тогда вы можете ограничить к нему доступ, как с помощью пароля, так и с помощью проверки IP пользователя.
<Directory /home/www/site1/super-secret>
AuthUserFile /home/www/site1-passwd
AuthType Basic
AuthName MySite
Require valid-user
Order allow,deny
Allow from 172.17.10
Satisfy all
</Directory>
В приведенном выше примере директива Order allow, deny
по умолчанию блокирует доступ для всех, директива Allow
разрешает доступ пользователям из локальной сети, а директива Satisfy all
требует проверки как IP, так и пароля.