Ruby - Sesiones CGI

Una CGI :: Session mantiene un estado persistente para los usuarios web en un entorno CGI. Las sesiones deben cerrarse después de su uso, ya que esto garantiza que sus datos se escriban en la tienda. Cuando haya terminado permanentemente con una sesión, debe eliminarla.

#!/usr/bin/ruby

require 'cgi'
require 'cgi/session'
cgi = CGI.new("html4")

sess = CGI::Session.new( cgi, "session_key" => "a_test", "prefix" => "rubysess.")
lastaccess = sess["lastaccess"].to_s
sess["lastaccess"] = Time.now
if cgi['bgcolor'][0] =~ /[a-z]/
   sess["bgcolor"] = cgi['bgcolor']
end

cgi.out {
   cgi.html {
      cgi.body ("bgcolor" => sess["bgcolor"]) {
         "The background of this page"    +
         "changes based on the 'bgcolor'" +
         "each user has in session."      +
         "Last access time: #{lastaccess}"
      }
   }
}

Acceder a "/cgi-bin/test.cgi?bgcolor = red" convertiría la página en rojo para un solo usuario por cada visita sucesiva hasta que se especificara un nuevo "bgcolor" a través de la URL.

Los datos de la sesión se almacenan en un archivo temporal para cada sesión, y el parámetro de prefijo asigna una cadena que se antepone al nombre del archivo, haciendo que sus sesiones sean fáciles de identificar en el sistema de archivos del servidor.

CGI :: Session todavía carece de muchas funciones, como la capacidad de almacenar objetos que no sean cadenas, almacenamiento de sesiones en varios servidores.

Clase CGI :: Sesión

Una CGI :: Session mantiene un estado persistente para los usuarios web en un entorno CGI. Las sesiones pueden ser residentes en la memoria o pueden estar almacenadas en disco.

Métodos de clase

Clase Ruby Class CGI :: Session proporciona un método de clase única para crear una sesión -

CGI::Session::new( cgi[, option])

Inicia una nueva sesión CGI y devuelve el objeto CGI :: Session correspondiente. La opción puede ser un hash de opción que especifique uno o más de los siguientes:

  • session_key- Nombre de la clave que contiene el ID de la sesión. El valor predeterminado es _session_id.

  • session_id- ID de sesión único. Generado automáticamente

  • new_session- Si es verdadero, cree una nueva identificación de sesión para esta sesión. Si es falso, use una sesión existente identificada por session_id. Si se omite, use una sesión existente si está disponible; de ​​lo contrario, cree una nueva.

  • database_manager- Clase para usar para guardar sesiones; puede ser CGI :: Session :: FileStore o CGI :: Session :: MemoryStore. El valor predeterminado es FileStore.

  • tmpdir - Para FileStore, directorio para archivos de sesión.

  • prefix - Para FileStore, prefijo de los nombres de archivo de sesión.

Métodos de instancia

No Señor. Métodos y descripción
1

[ ]

Devuelve el valor de la clave dada. Vea el ejemplo anterior.

2

[ ]=

Establece el valor de la clave dada. Vea el ejemplo anterior.

3

delete

Llama al método de eliminación del administrador de base de datos subyacente. Para FileStore, elimina el archivo físico que contiene la sesión. Para MemoryStore, elimina la sesión de la memoria.

4

update

Llama al método de actualización del administrador de base de datos subyacente. Para FileStore, escribe los datos de la sesión en el disco. No tiene ningún efecto con MemoryStore.