Class: CGI::Session

  • Expose the CGI instance to session stores.
  • Don‘t require ‘digest/md5’ whenever a new session id is generated.

Child modules and classes

Class CGI::Session::ActiveRecordStore
Class CGI::Session::CookieStore
Class CGI::Session::DRbStore
Class CGI::Session::MemCacheStore
Class CGI::Session::PStore

Aliases

Old nameNew name
initialize initialize_without_cgi_reader

Attributes

NameRead/write?
cgi R
data R
dbman R

Public Class Methods


generate_unique_id (constant = 'foobar')

Generate an 32-character unique id based on a hash of the current time, a random number, the process id, and a constant string. This is used to generate session ids but may be reused elsewhere.

    # File vendor/rails/actionpack/lib/action_controller/cgi_ext/session.rb, line 21
21:       def self.generate_unique_id(constant = 'foobar')
22:         md5 = Digest::MD5.new
23:         now = Time.now
24:         md5 << now.to_s
25:         md5 << String(now.usec)
26:         md5 << String(rand(0))
27:         md5 << String($$)
28:         md5 << constant
29:         md5.hexdigest
30:       end

generate_unique_id (constant = nil)

Generate a 32-character unique id using SecureRandom. This is used to generate session ids but may be reused elsewhere.

    # File vendor/rails/actionpack/lib/action_controller/cgi_ext/session.rb, line 14
14:       def self.generate_unique_id(constant = nil)
15:         SecureRandom.hex(16)
16:       end

new (cgi, options = {})

    # File vendor/rails/actionpack/lib/action_controller/cgi_ext/session.rb, line 37
37:     def initialize(cgi, options = {})
38:       @cgi = cgi
39:       initialize_without_cgi_reader(cgi, options)
40:     end

Public Instance Methods


model ()

Return this session‘s underlying Session instance. Useful for the DB-backed session stores.

    # File vendor/rails/actionpack/lib/action_controller/session/active_record_store.rb, line 10
10:     def model
11:       @dbman.model if @dbman
12:     end

Private Instance Methods


create_new_id ()

Create a new session id.

    # File vendor/rails/actionpack/lib/action_controller/cgi_ext/session.rb, line 44
44:       def create_new_id
45:         @new_session = true
46:         self.class.generate_unique_id
47:       end