1

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

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

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

4

2 回答 2

2

在 Devise 的 wiki 上查看此页面:

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

基本上,Devise 在使用omniauth 时默认不会调用rememberable。如果您希望这样做,只需简单地调用remember_me(@user)您的omniauth 回调,Devise 就会为您完成工作。它还将使用您的设计初始化程序中设置的所有配置选项。

于 2012-10-26T10:16:49.527 回答
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 周。

于 2012-10-25T11:31:58.843 回答