Předčasná session expirace
- Keksa
- Člen | 23
Mám takový problém, v bootstrapu je normálně nastavené:
$configurator->addConfig(__DIR__ . '/config/config.neon');
$container = $configurator->createContainer();
$container->session->setExpiration('+ 14 days');
$container->session->setSavePath(SESSIONS_DIR);
if ($container->session->exists()) {
$container->session->start();
}
A handler submitted přihlašovacího formuláře vypadá takto:
public function signInFormSubmitted($form)
{
try {
$values = $form->getValues();
if ($values->remember) {
$this->getUser()->setExpiration('+ 14 days', FALSE);
} else {
$this->getUser()->setExpiration('+ 12 hours', TRUE);
}
$this->getUser()->login($values->username, $values->password);
$this->redirect('Chat:');
} catch (NS\AuthenticationException $e) {
$form->addError($e->getMessage());
}
}
Jenže se mi stává, že se mi i přesto uživatel po cca půl hodině
odhlásí. Když se podívám ve firefoxu do cookies tak má expiraci nastavenou
normálně do + 14 dní.
Takže se ptám, nevíte někdo čím to?
- Keksa
- Člen | 23
Hmm, tak i přesto, že jsem na serveru nastavil session.gc_maxlifetime na 1209600 sekund (14 dní) tak se to odhlásí. Nastavuju to sice přes ini_set, ale to by snad nemělo vadit, když ini_get pak v pořádku tu hodnotu zobrazí. Na wedos hostingu to ani jinak nezměnim.
Nastavení sessions v bootstrapu:
ini_set('session.gc_maxlifetime',1209600);
$container->session->setExpiration('+ 14 days');
$container->session->setSavePath(SESSIONS_DIR);
// Opens already started session
if ($container->session->exists()) {
$container->session->start();
}
- Keksa
- Člen | 23
22 napsal(a):
@Keksa: trošku mě překvapilo, že wedos takové nastavení neumožňuje. Jinak ukládat citlivé informace o přihlášení do cookie není určitě dobrej nápad.
Jo, tak to mě taky. Souhlasím, že to není dobrej nápad, ale jediné řešení jaké mě napadá, je tahat všechno z databáze při každém reloadu stránky, což je naprosto nepoužitelné, protože by to imho neúměrně zatěžovalo server.
Editoval Keksa (29. 2. 2012 14:12)
- David Grudl
- Nette Core | 8228
Třeba by stačilo si pohrát s session.gc_divisor a session.gc_probability
- Keksa
- Člen | 23
David Grudl napsal(a):
Třeba by stačilo si pohrát s session.gc_divisor a session.gc_probability
To je právě to, nemůžu. Hosting Wedos to neumožňuje. Viz http://kb.wedos.com/…ace-php.html – jiné parametry měnit nelze a to ani pomocí funkce ini_set přímo v php. Psal sem na podporu, jestli by to nezvedli lokálně, tak uvidím.
EDIT: Tak mě odbyli, že to není možné a že pokud si to chci nastavit ať si objednám VPS.
Editoval Keksa (29. 2. 2012 19:38)