Class: Rack::Session::Abstract::ID
- Inherits:
-
Object
- Object
- Rack::Session::Abstract::ID
- Defined in:
- lib/rack/session/abstract/id.rb
Overview
ID sets up a basic framework for implementing an id based sessioning service. Cookies sent to the client for maintaining sessions will only contain an id reference. Only #get_session and #set_session are required to be overwritten.
All parameters are optional.
-
:key determines the name of the cookie, by default it is ‘rack.session’
-
:path, :domain, :expire_after, :secure, and :httponly set the related cookie options as by Rack::Response#add_cookie
-
:defer will not set a cookie in the response.
-
:renew (implementation dependent) will prompt the generation of a new session id, and migration of data to be referenced at the new id. If :defer is set, it will be overridden and the cookie will be set.
-
:sidbits sets the number of bits in length that a generated session id will be.
These options can be set on a per request basis, at the location of env. Additionally the id of the session can be found within the options hash at the key :id. It is highly not recommended to change its value.
Is Rack::Utils::Context compatible.
Constant Summary collapse
- DEFAULT_OPTIONS =
{ :key => 'rack.session', :path => '/', :domain => nil, :expire_after => nil, :secure => false, :httponly => true, :defer => false, :renew => false, :sidbits => 128, :cookie_only => true, :secure_random => begin ::SecureRandom rescue false end }
Instance Attribute Summary collapse
-
#default_options ⇒ Object
readonly
Returns the value of attribute default_options.
-
#key ⇒ Object
readonly
Returns the value of attribute key.
Instance Method Summary collapse
- #call(env) ⇒ Object
- #context(env, app = @app) ⇒ Object
-
#initialize(app, options = {}) ⇒ ID
constructor
A new instance of ID.
Constructor Details
#initialize(app, options = {}) ⇒ ID
Returns a new instance of ID.
178 179 180 181 182 183 184 |
# File 'lib/rack/session/abstract/id.rb', line 178 def initialize(app, ={}) @app = app @default_options = self.class::DEFAULT_OPTIONS.merge() @key = [:key] || "rack.session" @cookie_only = @default_options.delete(:cookie_only) initialize_sid end |
Instance Attribute Details
#default_options ⇒ Object (readonly)
Returns the value of attribute default_options.
176 177 178 |
# File 'lib/rack/session/abstract/id.rb', line 176 def @default_options end |
#key ⇒ Object (readonly)
Returns the value of attribute key.
176 177 178 |
# File 'lib/rack/session/abstract/id.rb', line 176 def key @key end |
Instance Method Details
#call(env) ⇒ Object
186 187 188 |
# File 'lib/rack/session/abstract/id.rb', line 186 def call(env) context(env) end |
#context(env, app = @app) ⇒ Object
190 191 192 193 194 |
# File 'lib/rack/session/abstract/id.rb', line 190 def context(env, app=@app) prepare_session(env) status, headers, body = app.call(env) commit_session(env, status, headers, body) end |