设计:用户每次关闭浏览器时都必须再次登录

时间:2012-10-25 11:15:36

标签: ruby-on-rails ruby-on-rails-3 devise ruby-on-rails-3.2

我正在使用Devise和Omniauth进行用户身份验证。

我希望用户在身份验证后保持登录状态2周。但是,只要用户关闭浏览器窗口并重新打开它,他就会再次进入登录屏幕。

即使在浏览器关闭并重新打开后,用户保持连接的正确配置是什么?

2 个答案:

答案 0 :(得分:2)

在Devise的wiki上查看此页面:

https://github.com/plataformatec/devise/wiki/Omniauthable,-sign-out-action-and-rememberable

基本上,在使用omniauth时,Devise默认不会调用rememberable。如果您希望这样做,请在您的omniauth回调和Devise上简单地致电remember_me(@user),为您做好准备。它还将使用设计初始化程序中设置的所有配置选项。

答案 1 :(得分:0)

您必须扩展设计SessionsController以在登录和注销时添加cookie,因此控制器将如下所示:

class SessionsController < Devise::SessionsController
  # POST /resource/sign_in
  def create
    cookies[:sign_in] = "Sign in info you want to store"
    # add this for expiration { :expires => 2.weeks.from_now }
    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" }

您还可以将Cookie到期时间设置为2周。