2011-11-26 7 views
1

現在、セッションの有効期限が1.hoursからRailsに設定されていますか?Cookieのように1時間後にセッションを期限切れにするにはどうすればよいですか?

クッキーのようなオプションがあります:

cookies[:thing] = {:value => {:normal => "session stuff"}, :expires => 2.hours.from_now} 

は、セッションのための任意のオプションもありますか?

+0

を?存在しない場合は、[there](http://snippets.dzone.com/posts/show/7400)などの独自のセッション有効期限フィルタを作成するか、 'Devise'([docs](https://github.com)/plataformatec/devise))には 'timeoutable'オプションがあります。 –

答えて

1

あなたはまた、これらは私のアプリケーションで作業しているすべての

session[:expires_at] = Time.now + 60.minutes 
session[:expires_at] = Time.now + 1.hour 
session[:expires_at] = Time.now + 3600 #1 hour in seconds 

を試すことができます。この

session[:expires_at] = 60.minutes.from_now 

を試してみてください。タイムゾーンを忘れないでください。

+0

申し訳ありませんこれは動作しません..このためのスイープを追加できます – Ramanavel

+0

セッション[:expires_at]には、セッションの有効期限が切れる時間が含まれています... 60.minutes.from_nowはTime.now + 60.minutesに等しくなります。私のアプリケーションでうまくいきます。あなたが直面しているPBMは何ですか? –

+0

タイムゾーンに問題がある可能性があります。必要なタイムゾーンでセッション[:expires_at] = 60.minutes + Time.nowを試すことができます。 –

4

あなたはあなたのアプリケーションのコントローラにこれを追加することができます:あなたは、セッション管理のために使うのですか宝石

before_filter :session_expires, :except => [:login, :logout] 
before_filter :update_session_time, :except => [:login, :logout] 

def session_expires 
    @time_left = (session[:expires_at] - Time.now).to_i 
    unless @time_left > 0 
    reset_session 
    flash[:error] = 'Lorem Ipsum.' 
    redirect_to :controller => 'foo', :action => 'bar' 
    end 
end 

def update_session_time 
    session[:expires_at] = 60.minutes.from_now 
end 
関連する問題