У меня есть приложение, которое подключается к приложению iphone, которое, в свою очередь, аутентифицирует своих пользователей через http_digest.
Я использую authlogic, и в моей схеме пользователи сайта - это «пользователи» и пользователиприложение телефона "люди".Итак, у меня есть user_sessions и people_sessions.Чтобы обработать http_digest auth, я использую метод authenticate_or_request_with_http_digest, подобный этому:
def digest_authenticate_person
authenticate_or_request_with_http_digest do |email, password|
#ldb is just a logging method i have
ldb "email = #{email.inspect}, password = #{password.inspect}"
person = Person.find_by_email(email)
if person
ldb "Authentication successful: Got person with id #{person.id}"
@current_person_session = PersonSession.create(person)
else
ldb "Authentication failed"
@current_person_session = nil
end
return @current_person_session
end
end
В журналах я вижу, что пароль равен nil: только электронная почта передается внутрь блока authenticate_or_request_with_http_digest.
Я тестирую это с помощью вызова curl следующим образом:
curl --digest --user fakename@madeup.xyz:apass "http://localhost:3000/reports.xml"
Я ожидаю, что "fakename@madeup.xyz" и "apass" пройдут внутрь блока,Получив пароль, я могу использовать комбинацию адреса электронной почты и пароля, чтобы найти (или нет) пользователя обычным способом.Кто-нибудь знает, как я могу получить доступ к паролю?
благодарен за любые советы - макс.
РЕДАКТИРОВАТЬ - при дальнейшем поиске в Google, я думаю, что я использую этот метод неправильно: я должен просто вернуть пароль или зашифрованный пароль.Но тогда как мне сравнить его с паролем, переданным как часть имени пользователя http_digest?