我正在使用Devise for rails 3应用程序。对于页面缓存,我需要为登录/注销信息设置Cookie。如何在设计登录/注销时设置cookie
在Devise登录/登出时设置cookie的最简单方法是什么?我读过'如何定制控制器'部分,但它似乎是很多工作。
我正在使用Devise for rails 3应用程序。对于页面缓存,我需要为登录/注销信息设置Cookie。如何在设计登录/注销时设置cookie
在Devise登录/登出时设置cookie的最简单方法是什么?我读过'如何定制控制器'部分,但它似乎是很多工作。
它实际上也不会太硬,延长色器件SessionsController在加上日志饼干和注销,您可以创建一个类似的控制器:
# 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
那么你就必须添加跟随您的routes.rb:
devise_for :users, :controllers => { :sessions => "sessions" }
这应该让你在那里的大部分。
由于设计是基于监狱长,另一个解决方案是使用监狱长的回调,例如,在你的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
摘自@卡尔 - rosaen回答这个问题的解决方案创建一个新的初始化或增加devise.rb初始化程序的结尾。
这将增加该cookie,如果还记得我的选项设置为记住电子邮件,如果没有它会删除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
我不得不复制会话/ new.html.haml。有用!谢谢。 – 2011-02-07 20:34:11
您可以使用http://stackoverflow.com/questions/4301249/how-to-change-the-default-path-of-view-files-in-a-rails-3-controller中的解决方案来使用原始观点。 – 2011-03-06 17:20:41