Ramanavel
Ramanavel

Reputation: 408

How do I expire a session after one hour, like cookies?

How do I set up a session value that expires 1.hours from now in Rails?

Cookies have an option like:

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

Are there any options for sessions too?

Upvotes: 1

Views: 6299

Answers (2)

dku.rajkumar
dku.rajkumar

Reputation: 18568

please try this

session[:expires_at] = 60.minutes.from_now

you can also try

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

All these are working in my application. Please do not forget to consider time zone.

Upvotes: 2

Simpleton
Simpleton

Reputation: 6415

You can add this to your application controller:

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

Upvotes: 4

Related Questions