我正在使用Devise和Omniauth進行用戶驗證。設計:用戶每次關閉瀏覽器時都必須重新登錄
我希望用戶在身份驗證後的2周內保持登錄狀態。但是,只要用戶關閉瀏覽器窗口並重新打開它,他就會再次獲取登錄屏幕。
甚至在瀏覽器關閉並重新打開後,用戶保持連接的正確配置是什麼?
我正在使用Devise和Omniauth進行用戶驗證。設計:用戶每次關閉瀏覽器時都必須重新登錄
我希望用戶在身份驗證後的2周內保持登錄狀態。但是,只要用戶關閉瀏覽器窗口並重新打開它,他就會再次獲取登錄屏幕。
甚至在瀏覽器關閉並重新打開後,用戶保持連接的正確配置是什麼?
查看此頁面上制定的wiki:
https://github.com/plataformatec/devise/wiki/Omniauthable,-sign-out-action-and-rememberable
基本上,設計不rememberable默認使用omniauth時調用。如果你願意這樣做,簡單地在你的omniauth回調中調用remember_me(@user)
,Devise會爲你做好工作。它還將使用您的設計初始化程序中設置的所有配置選項。
謝謝。就是這樣。我必須自己實現「記住我」複選框。 – davidrac
您必須擴展色器件SessionsController在加上日誌餅乾和註銷,所以控制器將看起來像這樣的:
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周。
這可能有助於http://stackoverflow.com/questions/5987075/devise-remember-me-not-working-localhost-issue – Rubyman