Апачская аутентификация кроме localhost - PullRequest
16 голосов
/ 13 января 2012

Мне нужно применить HTTP-аутентификацию только при публичном использовании веб-сайта, но я не применяю его на своем локальном хосте.Это .htaccess, который, я думаю, должен работать.Но это не работает - все равно спрашивает у меня user / pass.
Что я делаю не так?

SetEnvIf Remote_Addr ^127\.0\.0\.1$ develmode
<IfDefine !develmode>
    AuthType Basic
    AuthName "ADMIN"
    AuthUserFile /path/to/.htpasswd
    Require valid-user
</IfDefine>

mod_setenvif включено, конечно.

Ответы [ 2 ]

26 голосов
/ 13 января 2012

Вам нужно взглянуть на ключевые слова order и satisfy.Рабочий пример с моего сайта ниже.Сначала мы говорим, что принимаем IP или USER.Затем мы определяем путь к файлу htpasswd и принимаем любого допустимого пользователя из этого файла.Наконец, мы определяем, какие IP-адреса клиентов могут получить доступ к нашей сети без авторизации (мы запрещаем все другие IP-адреса, чтобы они выполняли аутентификацию через htpasswd).

18 голосов
/ 09 июня 2015

In Apache 2.4 , allow, deny и satisfy больше не используются, ограничение IP-адреса также выполняется с require, теперь:

AuthUserFile /path/to/.htpasswd
AuthName "Restricted Access"
AuthType Basic
Require ip 127.0.0.1
Require valid-user

Если какая-либо из директив Require выполнена, запрос разрешается. Если вам нужны оба, сгруппируйте их в блок <RequireAll>.

Для ограничения локального доступа вы можете использовать специальный синтаксис Require local вместо Require ip 127.0.0.1

Подробнее: http://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...