Sam*_*ong 16 ruby-on-rails devise
我正在使用Devise for rails 3应用程序.对于页面缓存,我需要为登录/注销信息设置cookie.
使用Devise登录/注销时设置cookie的最简单方法是什么?我读了"如何自定义控制器"部分,但它似乎是很多工作.
Kar*_*aen 21
由于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
Run Code Online (Sandbox Code Playgroud)
Bra*_*ker 13
实际上扩展设备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
Run Code Online (Sandbox Code Playgroud)
然后你必须将以下内容添加到routes.rb:
devise_for :users, :controllers => { :sessions => "sessions" }
Run Code Online (Sandbox Code Playgroud)
这应该会让你在那里大部分时间.