Rails 3, Authlogic, NGINX и HTTP базовая аутентификация не работают вместе
Я нахожусь на ранних стадиях создания приложения с использованием Rails 3. Аутентификация пользователя основана на Authlogic, который я настроил довольно стандартно ( в соответствии с примерами документов), и все работает локально, как и ожидалось.
Я только что развернул приложение на чистой серверной установке Centos 5.4 / NginX / Passenger, чтобы сотрудники могли начать входить в систему и вводить контент и т. Д. Однако мы далеки от того, чтобы быть готовыми для всеобщего обозрения, поэтому я использовал Основной модуль аутентификации NginX, позволяющий сохранить весь сайт за другим уровнем аутентификации.
К сожалению, аутентификация Authlogic и базовая аутентификация NginX, похоже, конфликтуют друг с другом. Если базовая аутентификация включена, то невозможно войти в систему с помощью Authlogic, но если я отключу базовую аутентификацию, то Authlogic будет работать как положено.
Я не разместил ни одного кода, так как я действительно не уверен, какой код будет релевантным. Интересно, это известная проблема и есть ли какие-либо изменения, которые я могу внести в конфигурацию, чтобы обойти проблему?
2 ответа
Я могу ответить на свой вопрос (после нескольких часов поиска в совершенно неправильном месте). Хороший рецензия на Authlogic::Session::Config
сделал трюк.
class UserSession < Authlogic::Session::Base
allow_http_basic_auth false
end
Я до сих пор не пробовал Rails 3, поэтому мой ответ будет более общим. И я не знаю базовый модуль аутентификации для NginX.
- Если ваша команда подключена локально, вы можете создать сервер, доступный только из локальной сети.
- Если вам нужен доступ через Интернет, то вы можете скрыть его за VPN.
- Вы можете настроить доступ к сайту только через локальный ip и дать доступ ssh всем, кому это нужно. Прокси-носки легко создать через ssh (в linux: ssh -D 8080 user@yourserver.com; где 8080 - номер порта, затем установите прокси-сервер socks в браузере, и вы можете пообедать yoursever.com:3000).
- Я думаю, что NginX позволяет вам устанавливать разрешенные IP-адреса и запрещать другие - так что вы можете использовать его и для ограничения доступа.
- А также вы можете временно добавить в
ApplicationController
before_filter :require_login
:), так что только страница входа будет доступна миру.
Надеюсь, поможет!