2015-09-14 26 views
0

我是Ruby的新手,使用1.8.7版本。請指導我設置會話超時和重定向到我的登錄頁面。如何在Ruby on Rails中設置會話超時並重定向到登錄頁面

配置:

ActionController::Base.session = { :key => '_fleetsmartlive_session', :secret => 'e9e5983619325de4f',expire_after => 5.minutes', } 
+0

請添加一些示例代碼 – usmanali

+0

的ActionController :: Base.session = { :鍵=> '_fleetsmartlive_session', :祕密=>'e9e5983619325de4f', expire_after => 5.minutes' – Raj

+0

請更新您的問題:您嘗試過什麼,您使用的是什麼auth庫(設計?),它如何不按預期工作。 – Jesper

回答

1

在應用控制器

before_filter :session_expiry 
before_filter :update_activity_time 

的頂部添加此添加應用程序控制器來使用這些方法。 這會使會話超時,如果頁面在一段時間內保持空閒狀態。

def session_expiry 

    get_session_time_left 
    unless @session_time_left > 0 
    flash.now[:error] = "Your session has timed out. Please log back in." 
    sign_out 
    end 
end 

def get_session_time_left 

    expire_time = session[:expires_at] || Time.now 
    @session_time_left = (expire_time - Time.now).to_i 
end 

def update_activity_time 
    session[:expires_at] = 3.minutes.from_now 
end 
+0

請在這裏設定的會議時間爲 – Raj

+0

以上代碼不允許我登錄。其重定向到家時,我點擊登錄 – Raj

+0

已更新的答案請檢查。 –

1

應該是簡單的,在你的應用程序控制器添加此

before_filter :check_session_expiry, if: proc{!resquest.url.include?('/signin')} 

def check_session_expiry 
    if !session[:expires_at].nil? and session[:expires_at] < Time.now 
    redirect_to signin_url 
    end 
    session[:expires_at] = MAX_SESSION_TIME.seconds.from_now 
end 
+0

我已經試過這個解決方案了。沒有運氣 – Raj

相關問題