2012-10-25 37 views
1

我正在使用Devise和Omniauth進行用戶驗證。設計:用戶每次關閉瀏覽器時都必須重新登錄

我希望用戶在身份驗證後的2周內保持登錄狀態。但是,只要用戶關閉瀏覽器窗口並重新打開它,他就會再次獲取登錄屏幕。

甚至在瀏覽器關閉並重新打開後,用戶保持連接的正確配置是什麼?

+0

這可能有助於http://stackoverflow.com/questions/5987075/devise-remember-me-not-working-localhost-issue – Rubyman

回答

2

查看此頁面上制定的wiki:

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

基本上,設計不rememberable默認使用omniauth時調用。如果你願意這樣做,簡單地在你的omniauth回調中調用remember_me(@user),Devise會爲你做好工作。它還將使用您的設計初始化程序中設置的所有配置選項。

+0

謝謝。就是這樣。我必須自己實現「記住我」複選框。 – davidrac

0

您必須擴展色器件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周。

相關問題