Ruby - Sessões CGI

Um CGI :: Session mantém um estado persistente para usuários da Web em um ambiente CGI. As sessões devem ser fechadas após o uso, pois isso garante que seus dados sejam gravados na loja. Ao terminar permanentemente com uma sessão, você deve excluí-la.

#!/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}"
      }
   }
}

Acessar "/cgi-bin/test.cgi?bgcolor = red" tornaria a página vermelha para um único usuário para cada acesso sucessivo até que um novo "bgcolor" fosse especificado por meio do URL.

Os dados da sessão são armazenados em um arquivo temporário para cada sessão, e o parâmetro prefix atribui uma string a ser anexada ao nome do arquivo, tornando suas sessões fáceis de identificar no sistema de arquivos do servidor.

CGI :: Session ainda carece de muitos recursos, como a capacidade de armazenar objetos diferentes de Strings, armazenamento de sessão em vários servidores.

Classe CGI :: Sessão

Um CGI :: Session mantém um estado persistente para usuários da web em um ambiente CGI. As sessões podem residir na memória ou podem ser armazenadas em disco.

Métodos de aula

Classe Ruby A classe CGI :: Session fornece um único método de classe para criar uma sessão -

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

Inicia uma nova sessão CGI e retorna o objeto CGI :: Session correspondente. option pode ser um hash de opção especificando um ou mais dos seguintes -

  • session_key- Nome da chave que contém o ID da sessão. O padrão é _session_id.

  • session_id- ID de sessão única. Gerado automaticamente

  • new_session- Se verdadeiro, crie um novo id de sessão para esta sessão. Se for falso, use uma sessão existente identificada por session_id. Se omitido, use uma sessão existente, se disponível, caso contrário, crie uma nova.

  • database_manager- Aula para usar para salvar sessões; pode ser CGI :: Session :: FileStore ou CGI :: Session :: MemoryStore. O padrão é FileStore.

  • tmpdir - Para FileStore, diretório para arquivos de sessão.

  • prefix - Para FileStore, prefixo dos nomes dos arquivos de sessão.

Métodos de Instância

Sr. Não. Métodos e Descrição
1

[ ]

Retorna o valor da chave fornecida. Veja o exemplo acima.

2

[ ]=

Define o valor para a chave fornecida. Veja o exemplo acima.

3

delete

Chama o método delete do gerenciador de banco de dados subjacente. Para FileStore, exclui o arquivo físico que contém a sessão. Para MemoryStore, remove a sessão da memória.

4

update

Chama o método de atualização do gerenciador de banco de dados subjacente. Para FileStore, grava os dados da sessão no disco. Não tem efeito com MemoryStore.