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.
# File lib/rack/session/abstract/id.rb, line 51 def initialize(app, options={}) @app = app @key = options[:key] || "rack.session" @default_options = self.class::DEFAULT_OPTIONS.merge(options) end
# File lib/rack/session/abstract/id.rb, line 57 def call(env) context(env) end
# File lib/rack/session/abstract/id.rb, line 61 def context(env, app=@app) load_session(env) status, headers, body = app.call(env) commit_session(env, status, headers, body) end