Rack::Session::Cookie provides simple cookie
based session management. By default, the session is a Ruby Hash stored as
base64 encoded marshalled data set to :key (default: rack.session). The
object that encodes the session data is configurable and must respond to
encode
and decode
. Both methods must take a
string and return a string.
When the secret key is set, cookie data is checked for data integrity. The old secret key is also accepted and allows graceful secret rotation.
Example:
use Rack::Session::Cookie, :key => 'rack.session', :domain => 'foo.com', :path => '/', :expire_after => 2592000, :secret => 'change_me', :old_secret => 'also_change_me' All parameters are optional.
Example of a cookie with no encoding:
Rack::Session::Cookie.new(application, { :coder => Rack::Session::Cookie::Identity.new })
Example of a cookie with custom encoding:
Rack::Session::Cookie.new(application, { :coder => Class.new { def encode(str); str.reverse; end def decode(str); str.reverse; end }.new })
# File lib/rack/session/cookie.rb, line 83 def initialize(app, options={}) @secrets = options.values_at(:secret, :old_secret).compact @coder = options[:coder] ||= Base64::Marshal.new super(app, options.merge!(:cookie_only => true)) end