Sha256: 9d88d6cff74ec3cba2453c4ebaf52f2a49ca0c50cc97e90ccf81e77ae9eb112a
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
# frozen_string_literal: true require 'redis-store' require 'redis-rack' require 'action_dispatch/middleware/session/abstract_store' module ActionDispatch module Session # Session storage in Redis, using +Redis::Rack+ as a basis. class RedisStore < Rack::Session::Redis include Compatibility include StaleSessionCheck include SessionObject def initialize(app, options = {}) options = options.dup options[:redis_server] ||= options[:servers] super end def generate_sid Rack::Session::SessionId.new(super) end private def set_cookie(env, _session_id, cookie) request = wrap_in_request(env) cookie_jar(request)[key] = cookie.merge(cookie_options) end def get_cookie(request) cookie_jar(request)[key] end def wrap_in_request(env) return env if env.is_a?(ActionDispatch::Request) ActionDispatch::Request.new(env) end def cookie_options @default_options.slice(:httponly, :secure) end def cookie_jar(request) if @default_options[:signed] request.cookie_jar.signed_or_encrypted else request.cookie_jar end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
redis-actionpack-5.5.0 | lib/action_dispatch/middleware/session/redis_store.rb |