Automatické odhlášení při zavření prohlížeče
- andros
- Člen | 145
Ahoj,
udělal jsem si v Nette první aplikaci podle návodu: https://doc.nette.org/cs/quickstart
Chtěl jsem si přihlášení uživatele rozšířit o automatické odhlášení po 30min nebo při zavření prohlížeče. Přihlašování jsem proto upravil takto:
public function signInFormSucceeded($form, $values)
{
try {
$this->getUser()->login($values->username, $values->password);
$this->getUser()->setExpiration('30 minutes', TRUE);
$this->redirect('Homepage:');
} catch (Nette\Security\AuthenticationException $e) {
$form->addError('Nesprávné přihlašovací jméno nebo heslo.');
}
}
Pokud se přihlásím a zavřu prohlížeč, po opětovném spuštění prohlížeče jsem pořád přihlášen. Co dělám špatně ?
V konfiguraci mám toto (opět podle návodu):
security:
users:
admin: admin
- David Matějka
- Moderator | 6445
Ahoj, nedelas nic spatne, tohle uz v podstate nefunguje – jiz neni v podstate mozne detekovat zavreni prohlizece, viz treba http://stackoverflow.com/…sion-cookies .. a v novem nette jiz byla tato moznost zcela odebrana, viz https://github.com/…ll/103/files
- andros
- Člen | 145
David Matějka napsal(a):
Ahoj, nedelas nic spatne, tohle uz v podstate nefunguje – jiz neni v podstate mozne detekovat zavreni prohlizece, viz treba http://stackoverflow.com/…sion-cookies .. a v novem nette jiz byla tato moznost zcela odebrana, viz https://github.com/…ll/103/files
Aha. Tak teď už je mi to jasné.
Pokud tedy budu chtít aby mi fungovalo odhlášení po 20min nečinnosti , musím nejdřív nastavit v konfiguraci toto:
session:
expiration: 19 minutes
Protože jinak by to asi nefungovalo, protože výchozí hodnota platnosti sessions je 180 min.
Jak to ale u výše uvedeného přihlášení udělat, aby expirovala pouze session které se používá pro přihlášení a ostatní zůstali v platnosti délé (standartní dobu 180min) ?
- jarda256
- Člen | 130
@andros Ahoj, já mam třeba v configu nastaveno expiration: 14 days
a při login mám nastaveno takto
$this->user->setExpiration($values->remember ? '14 days' : '20 minutes');
tzn. pokud uživatel zaškrtnul pamatovat si mě, tak mu to nastav na 14 dní a
pokud ne tak přihlášení vyprší za 20 minut neaktivity
- Eflyax
- Člen | 5
Mohu se prosím zeptat, jak je to třeba řešené na ČSFD? Také to jede na
nette a dle mě to funguje naprosto spolehlivě.
Pokud se přihlásím bez „Pamatovat si mě“ tak po zavření prohlížeče
jsem odhlášený. Pokud zaškrtnu „Pamatovat si mě“, tak zůstanu
přihlášený i po zavření prohlížeče.
Jak mám řešit situaci, kdy tuto funkcionalitu zákazník požaduje? Nemohu mu říct, že to nejde, když to vidí funkční na jiných webech (na nette).
- Kcko
- Člen | 468
Eflyax napsal(a):
Mohu se prosím zeptat, jak je to třeba řešené na ČSFD? Také to jede na nette a dle mě to funguje naprosto spolehlivě.
Pokud se přihlásím bez „Pamatovat si mě“ tak po zavření prohlížeče jsem odhlášený. Pokud zaškrtnu „Pamatovat si mě“, tak zůstanu přihlášený i po zavření prohlížeče.Jak mám řešit situaci, kdy tuto funkcionalitu zákazník požaduje? Nemohu mu říct, že to nejde, když to vidí funkční na jiných webech (na nette).
Máš bud možnost nastavit si expiraci třeba na půl roku, ale s tím, že si uděláš vlastní skladiště session souborů, protože nativně na každém PHP hostingu to má „výdrž“ kolem 20 minut (při neaktivitě); případně poté co zavřeš browser.
Nebo si uložíš nějaký Hash to COOKIE a budeš to nějakou svojí logikou ověřovat, zda-li tento Hash souhlasí s nějakým uživatelským účtem a uživatele přihlásíš.