Atualizações de Sessão do CakePHP, mas a validade do cookie não
Pergunta curta:
Por que o tempo de expiração do meu cookie de sessão não é atualizado no navegador quando o tempo de validade da minha sessão é atualizado no servidor?
Longa pergunta:
Eu postei umpergunta semelhante sobre isso há algumas semanas, mas eu não tenho todos os fatos no momento. Agora tenho mais detalhes e a natureza da pergunta mudou, então estou postando como uma nova pergunta.
Primeiro de tudo, no CakePHP 2, eu configurei o APP / Config / core.php com o seguinte para a sessão:
Configure::write('Session', array(
'defaults' => 'database',
'cookie' => 'mycookie',
'timeout' => 1 // 1 minute - just for testing
));
Então, eu carrego uma página que no meu aplicativo, que cria a sessão no banco de dados. Tudo bem até agora.
A sessão está marcada para expirar em1341288066
que é igual aTue, 03 Jul 2012 04:01:06 GMT
. Novamente, isso é ótimo porque é daqui a 1 minuto. Exatamente o que eu queria.
Se eu olhar na tela de cookies do Firefox, eu encontro o cookie exatamente como eu esperava:
Name: mycookie
Content: aqm0gkmjfsuqje019at8cgsrv3
Host: localhost
Path: /
Send for: Any type of connection
Expires: Tue 03 Jul 2012 11:01:06 AM ICT // (04:01:06 GMT)
Agora, dentro dessa janela de 1 minuto, volto ao meu aplicativo e atualizo a página. Então, eu verifico a sessão para ver se ela está atualizada. Isto mostra1341288122
contra o id da sessãoaqm0gkmjfsuqje019at8cgsrv3
que é igual aTue, 03 Jul 2012 04:02:02 GMT
que, novamente, é o que eu esperava. O vencimento da sessão foi atualizado para 1 minuto após o último recarregamento da página.
Infelizmente, o cookie no navegador ainda está configurado paraExpires: Tue 03 Jul 2012 11:01:06 AM ICT
(ie:04:01:06 GMT
) e é exatamente isso que faz, o que significa que na próxima vez que eu pressionar refresh, o Cake gera um novo ID de sessão, mesmo que o antigo ainda seja tecnicamente válido.
Minha pergunta é basicamente o que está acontecendo aqui? Por que o cookie não é atualizado com a nova data de expiração no navegador?