2014-01-14 55 views
1

我知道我可以做(每個用戶)的動態會話超時與所述色器件像hereRails的使用設計和動態會話超時會話存儲

此之前,精細的工作,但現在,我使用的軌道會話存儲和它doesn」工作了。

我搜索了很長時間,但沒有找到答案,有誰知道如何做到這一點?

感謝

回答

1

我曾與一些before_filters現在做到了:

class ApplicationController < ActionController::Base 
    before_filter :update_session, :check_if_session_is_valid 

    ... 
    def check_if_session_is_valid 
    session_timeout = current_user.try(:session_timeout) || 1800 
    if session[:timestamp] <= session_timeout.seconds.ago.to_i 
     session[:user_id] = nil 
    end 
    end 

    def update_session 
    session[:timestamp] = Time.now.to_i 
    end 

而且在使用由我添加了這個輪詢控制器(會話不應該獲得通過輪詢更新):

skip_before_filter :update_session, :only => :get_new 
0

使用設計會話超時最簡單的方法是使用Devise的'可超時'模塊。以下兩行將提供會話超時功能,僅當您在Rails應用程序中使用設計時。

第1步:在你User.rb模式聲明此

devise: timeoutable 

第2步:

應用程序/配置/初始化/ devise.rb添加以下行,通過默認設置設計是30分鐘。

config.timeout_in = 15.minutes 

希望這對你有用!

謝謝!