Otázky k třídě User , sliding expirace, session
- bojovyletoun
- Člen | 667
Ahoj, mám nějaké otázky k třídě user?
- Jde nějak získat info o uživateli jinak než
$cont->session->getSection('Nette.Web.User/')
(totiž User::getSessionSection je protected) například chci vědět authTime, - jde nějak nastavit fixní expirace (ne-sliding)? Dám li
user::setexpiration(1307657421)
, tak se mi stane, že user je i po osudné době přihlášen a expireDelta je záporné. (toto způsobí, že zůstane přihlášený nadále) Defatko to znamená, že delta se nastaví na zápornou hodnotu a user se nikdy neodhlásí - na jakém místě je správné volat user::setExpiration() a co to může způsbit za chyby
Editoval bojovyletoun (10. 6. 2011 2:12)
- Filip Procházka
- Moderator | 4668
Info o uživateli je jeho identita a ta je přístupná přes
$presenter->context->user->getIdentity()
. Do
Identity
si můžeš klidně uložit i čas přihlášení.
V examplech je User::setExpiration()
volané hned po
přihlášení, ale mělo by to fungovat kdykoliv, kdy půjdou ještě odesílat
hličky (startup, action, handle).
- bojovyletoun
- Člen | 667
K bodu 2) Možná by stálo za to přidat další reason odhlášení:
EXPIRED. Stačilo by defacto zkopírovat
kód od podmínky a smazat expireDelta>0… Ikdyž tak jednoduché to nebude.
I kdyz tady jsou 2 případy (kód by využil toto
): 1) zadám konkrétní datum – fixní čas expirace, 2) počet sekund –
sliding expirace
- Filip Procházka
- Moderator | 4668
Problém je, že nemůžeš určit, jestli jsi expiroval, když jsi expiroval, protože už nemáš přístup do té session :)
- David Grudl
- Nette Core | 8218
bojovyletoun napsal(a):
1. Jde nějak získat info o uživateli jinak než
$cont->session->getSection('Nette.Web.User/')
(totiž User::getSessionSection je protected) například chci vědět authTime,
Nejde, není to součástí API.
2. jde nějak nastavit fixní expirace (ne-sliding)? Dám li
user::setexpiration(1307657421)
, tak se mi stane, že user je i po osudné době přihlášen a expireDelta je záporné. (toto způsobí, že zůstane přihlášený nadále) Defatko to znamená, že delta se nastaví na zápornou hodnotu a user se nikdy neodhlásí
Nulová (nebo záporná) expirace znamená: neodhlašovat. Fixní expirace nastavit nejde – nebyl by problém ji implementovat, ale nenapadá mě důvod, k čemu by to bylo dobré.
3. na jakém místě je správné volat user::setExpiration() a co to může způsbit za chyby
Mělo by se to dat volat kdykoliv, jen jelikož to pracuje se session, musí buď session existovat, nebo nesmí být ještě odeslané HTTP hlavičky.