Как пройти аутентификацию с помощью 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

Надеюсь, что это помогло.

Другие вопросы по тегам