Welcome to the Cookbook

loading...

5.7 Sessions

O componente Session do CakePHP oferece uma maneira de persistir dados do cliente entre requisições de páginas. Este componente funciona como um encapsulador para a variável $_SESSION além de oferecer métodos de conveniência para diversas funções relacionadas ao $_SESSION.

Sessões podem ser persistidas de diferentes maneiras. O padrão é usar as configurações definidas pelo PHP; no entanto existem outras opções.

cake
Salva os arquivos de sessão do diretório tmp/sessions de sua aplicação.
database
Utiliza sessões da base de dados do CakePHP.
cache
Utiliza o mecanismo de cache configurado em Cache::config(). Muito útil para ser usado em conjunto com o Memcache (em ambientes servindo múltiplas aplicações) para armazenar tanto dados em cache quanto dados de sessões.
php
A configuração padrão. Salva os arquivos de sessão conforme definido no php.ini.

Para modificar o método padrão de manipulação de sessões, altere a configuração de Session.save para refletir a opção de sua preferência. Se você escolher 'database', você deveria também descomentar as configurações de Session.database e rodar o arquivo de script SQL localizado em app/config.

Para usar uma configuração personalizada, defina o valor de Session.save para um nome de um arquivo. O CakePHP vai considerar este arquivo informado no diretório CONFIGS.

// app/config/core.php
Configure::write('Session.save','my_session');
  1. // app/config/core.php
  2. Configure::write('Session.save','my_session');

Isto permite que você personalize a manipulação de sessões.

// app/config/my_session.php
//
// Reverte o valor e força checagem do referrer mesmo quando
// Security.level for medium
ini_restore('session.referer_check');

ini_set('session.use_trans_sid', 0);
ini_set('session.name', Configure::read('Session.cookie'));

// Cookies agora são destruídos quando o navegador é fechado,
// não persiste a informação por dias e é o padrão para nível
// de segurança em low ou medium
ini_set('session.cookie_lifetime', 0);

// Cookie path agora é '/', mesmo se sua aplicação estiver
// em um subdiretório no domínio
$this->path = '/';
ini_set('session.cookie_path', $this->path);

// Cookies de sessão agora são persistidos para todos
// os subdomínios
ini_set('session.cookie_domain', env('HTTP_BASE'));
  1. // app/config/my_session.php
  2. //
  3. // Reverte o valor e força checagem do referrer mesmo quando
  4. // Security.level for medium
  5. ini_restore('session.referer_check');
  6. ini_set('session.use_trans_sid', 0);
  7. ini_set('session.name', Configure::read('Session.cookie'));
  8. // Cookies agora são destruídos quando o navegador é fechado,
  9. // não persiste a informação por dias e é o padrão para nível
  10. // de segurança em low ou medium
  11. ini_set('session.cookie_lifetime', 0);
  12. // Cookie path agora é '/', mesmo se sua aplicação estiver
  13. // em um subdiretório no domínio
  14. $this->path = '/';
  15. ini_set('session.cookie_path', $this->path);
  16. // Cookies de sessão agora são persistidos para todos
  17. // os subdomínios
  18. ini_set('session.cookie_domain', env('HTTP_BASE'));