Как установить куки при входе / выходе с Devise - PullRequest
16 голосов
/ 01 февраля 2011

Я использую Devise для рельсов 3 приложения.Для кэширования страниц мне нужно установить куки для входа / выхода информации.

Какой самый простой способ установить куки, когда вход / выход происходит с Devise?Я прочитал часть «Как настроить контроллер», но, похоже, много работы.

Ответы [ 3 ]

21 голосов
/ 30 ноября 2012

Поскольку Devise основан на Warden, другим решением является использование обратных вызовов Warden, например, в вашем devise.rb:

  Warden::Manager.after_set_user do |user,auth,opts|
    auth.cookies[:signed_in] = 1
  end

  Warden::Manager.before_logout do |user,auth,opts|
    auth.cookies.delete :signed_in
  end
13 голосов
/ 05 февраля 2011

На самом деле было бы не так уж и сложно расширить устройство SessionsController для добавления файлов cookie при входе и выходе, вы можете создать контроллер, подобный следующему:

# app/controllers/sessions_controller.rb
class SessionsController < Devise::SessionsController
  # POST /resource/sign_in
  def create
    cookies[:sign_in] = "Sign in info you want to store"
    super
  end

  # GET /resource/sign_out
  def destroy
    cookies[:sign_out] = "Sign out info you want to store"
    super
  end
end

Затем вам нужно будет добавитьследующее для вашего rout.rb:

devise_for :users, :controllers => { :sessions => "sessions" }

Это поможет вам пройти большую часть пути.

4 голосов
/ 21 апреля 2015

Адаптировано с @ karl-rosaen. Ответьте на это решение, создайте новый инициализатор или добавьте в конец свой инициализатор devise.rb.

Это добавит файл cookie для запоминания электронного письма, если установлены параметры Запомнить меня,если нет, то удалит куки

Warden::Manager.after_authentication do |user, auth, opts|
  if user.remember_me
    auth.cookies[:email] = {value: user.email, expires: 2.weeks.from_now}
  else
    auth.cookies.delete :email
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...