Ошибка базовой аутентификации Rails HTTP - PullRequest
2 голосов
/ 14 декабря 2010

Я пытаюсь использовать authenticate_with_http_basic в приложении Rails 2.3.4, а имя пользователя и пароль не подобраны. Я провел небольшую детективную работу и выяснил, что это не удается, потому что в запросе нет заголовка авторизации. Я попытался добавить RewriteRule, предложенный в документации:

RewriteRule ^(.*)$ dispatch.fcgi [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L]

Мне не повезло ни с Apache / Passenger, ни с Mongrel. Мне также не повезло, попробовав authenticate_with_http_basic в приложении на Rails 3. Если я изменяю его на authenticate_or_request_with_http_basic, учетные данные, указанные в приглашении, работают, но он игнорирует любые, предоставленные в URL. (Это имеет смысл, поскольку он вызывает authenticate_with_http_basic.) Я не могу найти в своем коде ничего, что могло бы испортить запрос, и мне кажется странным, что он не работает локально с Mongrel. Есть предложения?

Ответы [ 2 ]

3 голосов
/ 14 декабря 2010

Я бы настоятельно рекомендовал использовать гем / плагин аутентификации, такой как Devise или Authlogic.Они оба поддерживают базовую аутентификацию HTTP.

Придумать: https://github.com/plataformatec/devise и http://railscasts.com/episodes/209-introducing-devise

Аутлогический: https://github.com/binarylogic/authlogic и http://railscasts.com/episodes/160-authlogic

0 голосов
/ 24 мая 2011

Для любых будущих пользователей: если кажется, что Rails получает что-то другое для заголовка Authorization, чем вы думаете, что отправляете, убедитесь, что вы не используете файлы .htaccess / .htpasswd. Браузер, очевидно, запоминает учетные данные и переопределяет все, что вы отправляете!

Просто потратил около 3 часов, пытаясь понять это. Я очень надеюсь, что это поможет кому-то другому: -)

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