Rails设计保持用户登录

时间:2012-07-19 10:12:36

标签: ruby-on-rails ruby facebook devise omniauth

我正在使用GEM设备从Facebook oauth验证用户身份。我使用以下内容创建用户

def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
  user = User.where(:provider => auth.provider, :uid => auth.uid).first
  unless user
    user = User.create(name:auth.extra.raw_info.name,
                       provider:auth.provider,
                       uid:auth.uid,
                       email:auth.info.email,
                       password:Devise.friendly_token[0,20]
                       )
  end
  user
 end

然后登录:

def facebook

  @user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)

  def after_sign_in_path_for(resource)
    return '/mypage'
  end

  if @user.persisted?
    flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Facebook"
    sign_in_and_redirect @user, :event => :authentication
  else
    session["devise.facebook_data"] = request.env["omniauth.auth"]
    redirect_to new_user_registration_url
  end
end

然而,当用户在大约15分钟不活动后访问应用程序时,他们将不再登录。我怎样才能增加这段时间?我目前似乎没有任何进展。

如果有人能提供设置cookie或其他内容的详细信息,那么即使浏览器关闭也会保持这种状态,这样做会很好。

编辑

完整的user.rb

class User < ActiveRecord::Base

  devise :database_authenticatable, :registerable,
       :recoverable, :rememberable, :trackable, :validatable,
       :omniauthable
  # Setup accessible (or protected) attributes for your model
  attr_accessible :name,  :provider, :uid, :email, :password, :password_confirmation, :remember_me

  has_many :ratings
  has_many :rated_recipes, :through => :ratings, :source => :recipes

  def self.find_for_facebook_oauth(auth, signed_in_resource=nil)
    user = User.where(:provider => auth.provider, :uid => auth.uid).first
    unless user
      user = User.create(name:auth.extra.raw_info.name,
                       provider:auth.provider,
                       uid:auth.uid,
                       email:auth.info.email,
                       password:Devise.friendly_token[0,20]
                       )
    end
    user
  end
end

编辑:

所以下面的一些建议让我在某处。当您通过托管的URL访问rails时,这一切似乎都能正常工作。但是,只要您点击Facebook应用页面,用户就不会再继续打开任何标签页。看不出为什么会这样

0 个答案:

没有答案