aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/middleware/session/cookie_store.rb
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-06-24 20:02:23 +0200
committerJosé Valim <jose.valim@gmail.com>2010-06-24 20:03:03 +0200
commitd69ebb849a78c07a4efc869789c4bc90e8741482 (patch)
treed3b3818d6d59dea7ea27a5eb9a6ddc605b8ab8cd /actionpack/lib/action_dispatch/middleware/session/cookie_store.rb
parentb549d93d2f34a18971e691ff93e4c5b7b092eb14 (diff)
downloadrails-d69ebb849a78c07a4efc869789c4bc90e8741482.tar.gz
rails-d69ebb849a78c07a4efc869789c4bc90e8741482.tar.bz2
rails-d69ebb849a78c07a4efc869789c4bc90e8741482.zip
Avoid deserializing cookies too early, which causes session objects to not be available yet. Unfortunately, could not reproduce this in a test case.
Diffstat (limited to 'actionpack/lib/action_dispatch/middleware/session/cookie_store.rb')
-rw-r--r--actionpack/lib/action_dispatch/middleware/session/cookie_store.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/session/cookie_store.rb b/actionpack/lib/action_dispatch/middleware/session/cookie_store.rb
index 7c5626735b..6c1567f470 100644
--- a/actionpack/lib/action_dispatch/middleware/session/cookie_store.rb
+++ b/actionpack/lib/action_dispatch/middleware/session/cookie_store.rb
@@ -65,8 +65,9 @@ module ActionDispatch
request = ActionDispatch::Request.new(env)
if data = request.cookie_jar.signed[@key]
data.stringify_keys!
+ else
+ {}
end
- data
end
def set_cookie(request, options)
@@ -77,6 +78,10 @@ module ActionDispatch
persistent_session_id!(session_data, sid)
end
+ def exists?(env)
+ ActionDispatch::Request.new(env).cookie_jar.key?(@key)
+ end
+
def destroy(env)
# session data is stored on client; nothing to do here
end