Sessions – vytváří se pořád nové soubory
- Dalibor
- Člen | 26
Zdravím,
zkoušel jsem hledat, ale žádné vlákno mi nepomohlo vyřešit tento problém:
Nedaří se mi správně ukládat informace v sessions. Konkrétně při přihlašování pomocí NS\IAuthenticator. Při odeslání login formuláře se přes autentikátor ověří uživatel, provede se přihlášení ($user->isLoggedIn vrací 1). Ale po dalším reloadu (přesměrování) se informace v session neudrží – ($user->isLoggedIn vrací 0).
V configu mám:
php: # PHP configuration
date.timezone: Europe/Prague
session.save_path: "%tempDir%/sessions"
zlib.output_compression: yes
default_charset: "UTF-8"
Zjistil jsem, že po úspěšném přihlášení se ve složce %tempDir%/sessions objeví nový soubor se session, jejíž ID ale neodpovídá PHPSESSID, které se přenáší v HTTP hlavičkách mezi prohlížečem a serverem (toto PHPSESSID je pořád stejné). Při jiném načtení stránky než akce login se soubor nevytváří..
Zkoušel jsem zakomentovat v configu ten řádek s nastavením cesty k sessions, ale i tak se to chová pořád stejně..
Prosím o nakopnutí.. Díky
- Dalibor
- Člen | 26
V bootstrapu mám:
<?php
$configurator->container->session->setExpiration('+ 14 days');
?>
a v presenteru v controlu toto:
<?php
$user -> setExpiration(0, TRUE);
?>
takže bych předpokládal, že tato konkrétní session vyexpiruje zavřením prohlížeče..
Ještě si s tím zkusím pohrát, ale toto jsem zkoušel jako první :-(
Každopádně díky za radu..
- uestla
- Backer | 799
https://api.nette.org/…ser.php.html#199 se tváří, jakoby nulová expirační doba opravdu znamenala odhlášení až při zavření prohlížeče – ostatně to samé je tvrzeno i v dokumentaci.
Spíš by mne zajímalo, jakým způsobem vzniká proměnná
$user
… ?
- Dalibor
- Člen | 26
Nastavil jsem expiraci sessions v bootstrapu, takze ted funguji sessions (vyzkouseno), nicmene chovani prihlasovani je porad stejne.. Pri dalsim nacteni stranky je prihlaseni zapomenuto.. Prikladam kod:
<?php
public function ownerLoginBoxSubmitted($form)
{
if ($form->isSubmitted() && $form->isValid()) {
if ($form['ownerlogin']->isSubmittedBy()) {
try {
$user = $this->context->user;
$user -> setAuthenticator(new \OwnerAuthenticator($this->em));
$user -> login ($form -> values['owneremail'],$form -> values['ownerpassword']);
$user -> setExpiration('+ 30 minutes', TRUE);
$this->flashMessage('Uživatel byl přihlášen.','ok');
} catch (NS\AuthenticationException $e) {
$form->addError($e->getMessage());
}
}
}
}
?>