在我的 Rails 3 应用程序中,我使用 Omniauth 进行用户身份验证部分 (fb/twitter)。
实际上我遵循这个:
https://github.com/RailsApps/rails3-mongoid-omniauth https://github.com/RailsApps/rails3-mongoid-omniauth
https://github.com/RailsApps/rails3-mongoid-omniauth/wiki/Tutorial https://github.com/RailsApps/rails3-mongoid-omniauth/wiki/Tutorial
但,
当我关闭浏览器会话时,我需要再次登录。
如何为回访用户保留会话?
任何帮助将不胜感激!
你想要的并不难,你只需要在创建会话时设置一个永久cookie,然后在设置当前用户时检索这个值。
In your ApplicationController
,只需改变你的current_user
方法:
def current_user
return unless cookies.signed[:permanent_user_id] || session[:user_id]
begin
@current_user ||= User.find(cookies.signed[:permanent_user_id] || session[:user_id])
rescue Mongoid::Errors::DocumentNotFound
nil
end
end
而在你的SessionsController
,修改你的create
如果用户想要设置 cookie:
def create
auth = request.env["omniauth.auth"]
user = User.where(:provider => auth['provider'],
:uid => auth['uid']).first || User.create_with_omniauth(auth)
session[:user_id] = user.id
cookies.permanent.signed[:permanent_user_id] = user.id if user.really_wants_to_be_permanently_remembered
redirect_to root_url, :notice => "Signed in!"
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)