X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/dd7ef37ec023646120358a0a6a7959a392b79f1c..57ba7d6f0b160a2dc883d84a6864464d5de6083a:/config/initializers/session_store.rb?ds=inline diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb index 77fd39092..72f2da7c5 100644 --- a/config/initializers/session_store.rb +++ b/config/initializers/session_store.rb @@ -1,17 +1,35 @@ # Be sure to restart your server when you modify this file. -# Your secret key for verifying cookie session data integrity. -# If you change this key, all old sessions will become invalid! -# Make sure the secret is at least 30 characters and all random, -# no regular words or you'll be exposed to dictionary attacks. -ActionController::Base.session = { - :key => '_osm_session', - :secret => 'd886369b1e709c61d1f9fcb07384a2b96373c83c01bfc98c6611a9fe2b6d0b14215bb360a0154265cccadde5489513f2f9b8d9e7b384a11924f772d2872c2a1f' -} +if defined?(MEMCACHE_SERVERS) + unless STATUS == :database_offline or STATUS == :database_readonly + module Rack + module Session + class Memcache + def get_session(env, sid) + with_lock(env, [nil, {}]) do + unless sid and session = @pool.get(sid) + if sid and s = ActiveRecord::SessionStore::SqlBypass.find_by_session_id(sid) + session = s.data + s.destroy + else + sid, session = generate_sid, {} + end + + unless /^STORED/ =~ @pool.add(sid, session) + raise "Session collision on '#{sid.inspect}'" + end + end + [sid, session] + end + end + end + end + end + end -# Use the database for sessions instead of the cookie-based default, -# which shouldn't be used to store highly confidential information -# (create the session table with "rake db:sessions:create") -unless STATUS == :database_offline or STATUS == :database_readonly - ActionController::Base.session_store = :sql_session_store + cache = MemCache.new(:namespace => "rails:session", :string_return_types => true) + + OpenStreetMap::Application.config.session_store :mem_cache_store, :cache => cache, :key => "_osm_session" +else + OpenStreetMap::Application.config.session_store :cookie_store, :key => '_osm_session' end