class ActionDispatch::Session::YiiRedisStore
Public Class Methods
new(app, options = {})
click to toggle source
Calls superclass method
# File lib/action_dispatch/middleware/session/yii_redis_store.rb, line 7 def initialize(app, options = {}) options = options.dup options = normalize_server_options(options) options[:redis_server] ||= options[:servers] super end
Public Instance Methods
get_session(env, sid)
click to toggle source
# File lib/action_dispatch/middleware/session/yii_redis_store.rb, line 27 def get_session(env, sid) if env["rack.session.options"][:skip] [generate_sid, {}] else with_lock(env, [nil, {}]) do unless sid && (session = with { |c| c.get(yii_session_id(sid)) }) session = {} sid = generate_unique_sid(session) end [sid, session] end end end
normalize_server_options(options)
click to toggle source
# File lib/action_dispatch/middleware/session/yii_redis_store.rb, line 14 def normalize_server_options(options) if options[:servers].any? options[:servers].map { |server| server[:serializer] ||= ::YiiRedisStore::PhpSerializer } end options end
set_session(env, session_id, new_session, options)
click to toggle source
# File lib/action_dispatch/middleware/session/yii_redis_store.rb, line 41 def set_session(env, session_id, new_session, options) with_lock(env, false) do with { |c| c.set yii_session_id(session_id), new_session, options } session_id end end
yii_session_id(sid)
click to toggle source
yii tranform the session_id using custom rule
# File lib/action_dispatch/middleware/session/yii_redis_store.rb, line 22 def yii_session_id(sid) Digest::MD5.hexdigest(::YiiRedisStore.session_digest).first(5) + Digest::MD5.hexdigest(['yii\redis\Session', sid].to_json) end