Ruby CGI Session

CGI::Session puede guardar el estado de sesión persistente para el usuario y el entorno CGI. Después de usar la sesión, debe cerrarse, para garantizar que los datos se escriban en el almacenamiento. Cuando la sesión haya terminado, debe eliminar esos datos.

Ejemplo

#!/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" redirigirá a una página con el color de fondo especificado.

Los datos de la sesión se guardan en el directorio de archivos temporales del servidor. El parámetro prefix especifica el prefijo de la sesión, que se utilizará como prefijo del archivo temporal. De esta manera, puede identificar fácilmente los distintos archivos temporales de sesión en el servidor.


Clase CGI::Session

CGI::Session mantiene el estado persistente entre el usuario y el entorno CGI. La sesión puede estar en la memoria o en el disco duro.

Métodos de clase

La clase Ruby CGI::Session proporciona un método simple para crear una sesión:

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

Activa una nueva sesión CGI y devuelve el objeto CGI::Session correspondiente. Las opciones pueden ser un hash opcional con los siguientes valores:

  • session_key:El nombre de clave para guardar la sesión. Por defecto es _session_id.
  • session_id:El ID único de sesión. Se genera automáticamente.
  • new_session:Si es true, se crea un nuevo id de sesión para la sesión actual. Si es false, se utiliza un identificador de sesión existente mediante session_id. Si se omite este parámetro, se usa la sesión existente si está disponible; de lo contrario, se crea una nueva.
  • database_manager:La clase utilizada para guardar las sesiones puede ser CGI::Session::FileStore o CGI::Session::MemoryStore. El valor por defecto es FileStore.
  • tmpdir:Para FileStore, es el directorio de almacenamiento de la sesión.
  • prefix:Para FileStore, es el prefijo de los archivos de sesión.

Métodos de instancia

N.ºDescripción del método
1[ ]
Devuelve el valor de la clave dada. Ver ejemplo.
2[ ]=
Establece el valor de la clave dada. Ver ejemplo.
3delete
Llama al método de eliminación de la gestión de base de datos subyacente. Para FileStore, elimina el archivo físico que contiene la sesión. Para MemoryStore, elimina los datos de la sesión de la memoria.
4update
Llama al método de actualización de la gestión de base de datos subyacente. Para FileStore, escribe la sesión en el disco. Para MemoryStore no tiene efecto.
Otras extensiones