2010-12-13 7 views
2

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

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

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

ответ

3

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

Разрабатывают: https://github.com/plataformatec/devise и http://railscasts.com/episodes/209-introducing-devise

Authlogic: https://github.com/binarylogic/authlogic и http://railscasts.com/episodes/160-authlogic

+0

Я использую Authlogic, но проблема заключается не столько в том, как аутентифицировать пользователя, сколько в том, почему данные не проходят. И даже если я могу найти другой подход, мне интересно, почему authenticate_with_http_basic не работает! – Nancy

0

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

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