Otázky k třídě User , sliding expirace, session

bojovyletoun
Člen | 668
+
0
-

Ahoj, mám nějaké otázky k třídě user?

  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,
  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í
  3. 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
+
0
-

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 | 668
+
0
-

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
+
0
-

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
founder | 8310
+
0
-

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.

RSS tématu Téma zavřeno