Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails session doesn't persist

I can't get Rails sessions to persist, both on a local environment and an external staging environment. Right now I'm just doing something basic, like session[:cart_id]=1 in one of my controllers. If I reload the page the session comes up empty {}. I must be missing something basic because I can't find anything online about this being common.

UPDATE 1

Even the simplest code shows sessions not persisting, for example I can do something as simple as session[:counter] = session[:counter].to_i + 1 in my action, and then = debug session in my view, and every time I refresh the browser I get:

{} {"session_id"=>"280031b7eb3b4bf612da85acc8815b3b", "counter"=>1}

and a new session_id is generated each time.

UPDATE 2

I removed the :domain => :all option from my session store and things look better, but still not persisting. Now the session_id is generating only once, so that is persisting. But if I store an integer inside the session it still isn't persisting to the next request.

like image 434
Brandon Williams Avatar asked Sep 30 '11 04:09

Brandon Williams


1 Answers

I had the same issue and it was driving me nuts.

It turned out that I had a protect_from_forgery in my ApplicationController which silently replaced the session with a NullSession.

I noticed this when I ran raise session.class.inspect.

Using protect_from_forgery with: :exception instead reveals the underlying problem properly.

like image 108
mcm Avatar answered Oct 06 '22 00:10

mcm