#ruby-on-rails #devise #basic-authentication
#ruby-on-rails #разработка #базовая аутентификация
Вопрос:
У меня следующая конфигурация:
разработка:database_authenticatable config.http_authenticatable = true
по запросу:
http://user:password@localhost:3000/
Devise игнорирует http auth login и перенаправляет на страницу входа
есть мысли?
С уважением
Ответ №1:
Что дает вам http_authenticatable, так это возможность использовать ваши учетные данные для аутентификации HTTP Basic для входа в собственную систему аутентификации. Вам все еще нужно самостоятельно закодировать блок http_auth, вот так:
def authenticate
authenticate_or_request_with_http_basic do |username, password|
username == "foo" amp;amp; password == "bar"
end
warden.custom_failure! if performed?
end
Этот код должен войти в ваш контроллер приложений. Убедитесь, что вы используете warden.custom_failure!, иначе разработка войдет в бесконечный цикл перенаправлений.
Ответ №2:
before_filter :check_auth
def check_auth
authenticate_or_request_with_http_basic do |username,password|
resource = User.find(username)
if resource.valid_password?(password)
sign_in :user, resource
end
end
warden.custom_failure! if performed?
end
Комментарии:
1. Вместо этого мне пришлось использовать
User.find_by email: username
, и это сработало, спасибо!