Как пройти аутентификацию с помощью warden.authenticate!
Я хотел бы сделать "вход или зарегистрироваться" на лету при публикации комментария на моем форуме. Я использую Devise/Warden.
Я хочу сделать что-то вроде этого:
user = warden.authenticate!(params[:email], params[:password])
sign_in(:user, user)
Кто-нибудь может дать мне несколько советов, как это сделать?
Спасибо!
3 ответа
Начальник имеет set_user
вспомогательный метод. Так что вы должны быть в состоянии сделать:
warden.set_user(@user, scope: :user)
Возможно, вы могли бы определить вспомогательный метод контроллера, чтобы войти в систему пользователя и перенаправить его на нужный путь
Дополнительная информация доступна по адресу: https://github.com/hassox/warden/wiki/Authenticated-session-data
Я знаю, что это старая тема, но я работал
# Inside SessionController < Devise::SessionsController
def create
self.resource = warden.authenticate!(auth_options)
sign_in(resource_name, resource) # this will set cookie
end
Это специфично для устройства, но при проверке метода auth_options в контроллере devise я нашел этот фрагмент кода здесь:
# File 'app/controllers/devise/sessions_controller.rb', line 45
def auth_options
{ scope: resource_name, recall: "#{controller_path}#new" }
end
Надеюсь, что это помогло.