В настоящее время я работаю над приложением, которое в дополнение к обычному наглядному веб-приложению также предоставит несколько API-сервисов RESTful для использования сторонними приложениями. Я использую Devise для управления аутентификацией пользователей, но я борюсь с тем, как «вручную» аутентифицировать пользователя при определенных входных данных.
Случай, который у меня есть, заключается в том, что я хочу, чтобы пользователь API входил в систему без фактического перехода к экрану визуального журнала и т. Д. Я хочу, чтобы он представил имя пользователя и пароль, а затем прошел проверку подлинности и выполнил вход в свой аккаунт. Сервисы API.
Я знаю, что вы можете подписать пользователя, используя sign_in
метод, который предоставляет Devise, но, похоже, он полностью игнорирует аутентификацию. вот что я хотел сделать, объяснил немного подробнее:
Предположим, GET-маршрут называется connect в пользовательском контроллере контроллер полностью заменяет контроллер регистрации Devise, но не сеансовый. URL моего сервиса будет:
<server>/users/connect
и ожидаются параметры 'email', 'password' в дополнение к некоторым специфическим службам и неважным для моего вопроса.
Я хочу знать, как реализовать что-то, эквивалентное следующему псевдокоду:
def connect
user = User.find_by_email(params[:email])
password = params[:password]
# here is the part I'm pseudo coding out
if user.is_valid_password(password)
...do my stuff...
end
render :json ...etc...
end
Мне не удалось найти метод в источнике Devise для этого - он настолько обобщен во многих отношениях, что я, вероятно, просто упускаю его.
У кого-нибудь есть идеи? Я надеюсь, что не а) придется реализовывать свое дело и б) не нужно уходить от Devise. Он предоставляет мне так много для не-API сервисов ...
спасибо!
Я пропустил th