Pergunta

Esta questão tem me deixado louco. Em dois projetos separados (ambos usam a pêra como bibliotecas, mas são gravados em estruturas personalizadas completamente diferentes), estou usando a Auth Pear para autenticação que usa a sessão.

Após o login, os usuários são registrados em uma hora ou mais de ficarem ociosos. Eu não tenho o tempo exato, mas é muito curto.

Eu tentei o seguinte sem sucesso. Todas as tentativas de estender a sessão a um dia, apenas para acertar o ponto de casa.

<?php
// Tried built-in methods to extend the idle time, called after Auth is initialised
$auth->setIdle( 86400 );

// Tried increasing the sesion timeout (before auth is called)
ini_set( 'session.gc_maxlifetime', 86400 );

// Tried increasing the cookie timeout (where the phpsession is held, before auth is called)
session_set_cookie_params( 86400 );

// Tried all of the above
?>

Alguém mais teve esse problema? Em caso afirmativo, é possível estender o tempo ocioso?

Estou quase pronto para recortar a pêra e escrever minha própria aula de autenticação baseada em biscoitos, mas realmente não tenho tempo.

Foi útil?

Solução

Eu não encontrei esse problema até agora, mas vejo duas razões possíveis que você não parece ter abordado ainda:

  1. Você poderia verificar o setexpire () Método da classe de autenticação, além de SetIdle ().
  2. Pode haver outros aplicativos/scripts baseados em PHP em execução no mesmo servidor, usando o mesmo diretório de armazenamento de sessão com um tempo limite mais baixo. De acordo com session.gc_maxlifetime Docs:

    Se scripts diferentes tiverem valores diferentes de session.gc_maxlifetime, mas compartilhe o mesmo local para armazenar os dados da sessão, o script com o valor mínimo estará limpando os dados. Nesse caso, use esta diretiva junto com session.save_path.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top