Data v session po odhlášení uživatele

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
radas
Člen | 221
+
0
-

Ahoj, dříve jsem vždy řešil odhlášení uživatele takto:

if ($this->getUser()->isLoggedIn())
{
  $this->getUser()->logout(TRUE);
  $this->flashMessage('Odhlášení proběhlo úspěšně');
}

$this->redirect('Auth:login');

ale všiml jsem si, že pokud si něco ukládám do session, tak i po odhlášení uživatele a následném přihlášení jsou data stále v session (např. nastavení parametrů nějakého formuláře pro filtrování záznamů). Nejspíš to není chyba, tak se chci jen zeptat, jak byste to řešili, mě na padlo toto řešení, které mi funguje tak jak jsem si představoval.

...
  $this->getUser()->logout(TRUE);
  $this->getSession()->destroy();
...

Díky za váš názor.

frosty22
Člen | 373
+
0
-

Podle mě to je správné chování – onen bool parametr logout jen řeší, zda-li má smazat uživateli identitu, či nikoliv ale nemá řešit ostatní proměnné v SESSION .. to by bylo špatné chování, když by třeba odhlášení vyprázdnilo i košík apod. Uživatel má svůj jmenný prostor a neměl by zasahovat do jiných.

Jinak namísto destroy by mělo stačit clean, což je bezpečnější v tom, že při destroy se vyhodí vyjímka, pokud session není spuštěná (což tedy u logout jistě bude, ale i tak).