我正在使用 Devise 和 Omniauth 进行用户身份验证。
我希望用户在身份验证后保持登录状态 2 周。但是,每当用户关闭浏览器窗口并重新打开它时,他都会再次进入登录屏幕。
即使在浏览器关闭并重新打开后,用户保持连接的正确配置是什么?
我正在使用 Devise 和 Omniauth 进行用户身份验证。
我希望用户在身份验证后保持登录状态 2 周。但是,每当用户关闭浏览器窗口并重新打开它时,他都会再次进入登录屏幕。
即使在浏览器关闭并重新打开后,用户保持连接的正确配置是什么?
在 Devise 的 wiki 上查看此页面:
https://github.com/plataformatec/devise/wiki/Omniauthable,-sign-out-action-and-rememberable
基本上,Devise 在使用omniauth 时默认不会调用rememberable。如果您希望这样做,只需简单地调用remember_me(@user)
您的omniauth 回调,Devise 就会为您完成工作。它还将使用您的设计初始化程序中设置的所有配置选项。
您必须扩展设计 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 周。