我正在使用Devise和Omniauth进行用户身份验证。
我希望用户在身份验证后保持登录状态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周。