Class: Rack::Session::Cookie

Inherits:
Abstract::ID show all
Defined in:
lib/rack/session/cookie.rb

Overview

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.

Example:

use Rack::Session::Cookie, :key => 'rack.session',
                           :domain => 'foo.com',
                           :path => '/',
                           :expire_after => 2592000,
                           :secret => 'change_me'

All parameters are optional.

Example of a cookie with no encoding:

Rack::Session::Cookie.new(application, {
  :coder => Racke::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
})

Defined Under Namespace

Classes: Base64, Identity, Reverse

Constant Summary

Constants inherited from Abstract::ID

Abstract::ID::DEFAULT_OPTIONS

Instance Attribute Summary collapse

Attributes inherited from Abstract::ID

#default_options, #key

Instance Method Summary collapse

Methods inherited from Abstract::ID

#call, #context

Constructor Details

#initialize(app, options = {}) ⇒ Cookie

Returns a new instance of Cookie.



81
82
83
84
85
# File 'lib/rack/session/cookie.rb', line 81

def initialize(app, options={})
  @secret = options.delete(:secret)
  @coder  = options.delete(:coder) || Base64::Marshal.new
  super(app, options.merge!(:cookie_only => true))
end

Instance Attribute Details

#coderObject (readonly)

Returns the value of attribute coder.



79
80
81
# File 'lib/rack/session/cookie.rb', line 79

def coder
  @coder
end