Rails 3, Authlogic, NGINX и HTTP базовая аутентификация не работают вместе - PullRequest
5 голосов
/ 17 мая 2010

Я нахожусь на ранних стадиях создания приложения с использованием Rails 3. Аутентификация пользователя основана на Authlogic, который я настроил довольно стандартно ( в соответствии с примерами документов ), и все работает как положено на местном уровне.

Я только что развернул приложение на чистой серверной установке Centos 5.4 / NginX / Passenger, чтобы сотрудники могли начать входить в систему и вводить контент и т. Д. Однако мы далеки от того, чтобы быть готовыми для всеобщего обозрения Я использовал базовый модуль аутентификации NginX, чтобы сохранить весь сайт за другим уровнем аутентификации.

К сожалению, аутентификация Authlogic и базовая аутентификация NginX, похоже, конфликтуют друг с другом. Если базовая аутентификация включена, то невозможно войти в систему с помощью Authlogic, но если я отключу базовую аутентификацию, то Authlogic будет работать как положено.

Я не разместил ни одного кода, так как я действительно не уверен, какой код будет релевантным. Интересно, это известная проблема и есть ли какие-либо изменения, которые я могу внести в конфигурацию, чтобы обойти проблему?

Ответы [ 2 ]

13 голосов
/ 18 мая 2010

Я могу ответить на свой вопрос (после нескольких часов поиска в совершенно неправильном месте). Хорошее чтение на Authlogic::Session::Config добилось цели.

class UserSession < Authlogic::Session::Base
  allow_http_basic_auth false
end
1 голос
/ 17 мая 2010

Я до сих пор не пробовал Rails 3, поэтому мой ответ будет более общим. И я не знаю базовый модуль аутентификации для NginX.

  1. Если ваша команда подключена локально, вы можете создать сервер, доступный только из локальной сети.
  2. Если вам нужен доступ через Интернет, вы можете спрятать его за VPN.
  3. Вы можете настроить доступ к сайту только через локальный ip и предоставить доступ по ssh всем, кому это нужно. Прокси-носки легко создать через ssh (в linux: ssh -D 8080 user@yourserver.com; где 8080 - номер порта, затем установите прокси-сервер socks в браузере и вы можете пообедать yoursever.com:3000).
  4. Я думаю, что NginX позволяет вам устанавливать разрешенные IP-адреса и запрещать другие - так что вы можете использовать его и для ограничения доступа.
  5. А также вы можете временно добавить к ApplicationController before_filter :require_login :), так что в мире будет доступна только страница входа.

Надеюсь, это поможет!

...