浏览器关闭时 Omniauth 会话过期

2024-05-16

在我的 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(使用前将#替换为@)

浏览器关闭时 Omniauth 会话过期 的相关文章

随机推荐