Refresh užvatelských dat po úpravě DB

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

Ahoj, existuje způsob, jak refreshnout userdata z databáze? Momentálně pro aktuální data využívám proměnné z renderu, kde si načtu do usera data z db, ale není to moc elegentní řešení. Radši bych refreshnul uživatele v sessions.

Hurass
Člen | 114
+
+2
-

A proč po té akci, kde uložíš do DB nová data, neupravíš ty data i v identitě přihlášeného uživatele?

PavelS
Člen | 66
+
0
-

Hurass napsal(a):

A proč po té akci, kde uložíš do DB nová data, neupravíš ty data i v identitě přihlášeného uživatele?

To mě taky napadlo a nebo si napsat funkci na aktualizaci, ale spíš mě zajímalo, jestli není nějaká už pro to připravená. :-)

CZechBoY
Člen | 3608
+
0
-

Na 3 radky nepotrebujes funkci z frameworku asi.
Vezmes identitu a vlozis novy data.

MirekTH
Člen | 20
+
0
-

Pokud netaháš složitá data tak bych údaje (jméno, příjmení, e-mail atd …) do session neukládal, vystačíš si s Id v Identity. Odpadne ti hromada problémů s invalidací.

Hurass
Člen | 114
+
+1
-

MirekTH napsal(a):

Pokud netaháš složitá data tak bych údaje (jméno, příjmení, e-mail atd …) do session neukládal, vystačíš si s Id v Identity. Odpadne ti hromada problémů s invalidací.

Chceš teda říct, že načítat několikrát a na několika místech uživatelská data je lepší, než si je prostě uložit do identity? Já bych řekl, že ne. Konec konců, ta identita je tam od toho, aby přesně tohle lidi nedělali.

MirekTH
Člen | 20
+
+2
-

Hurass napsal(a):
Chceš teda říct, že načítat několikrát a na několika místech uživatelská data je lepší, než si je prostě uložit do identity? Já bych řekl, že ne. Konec konců, ta identita je tam od toho, aby přesně tohle lidi nedělali.

Nene. Jen podle mého názoru nemá smysl ukládat tahle data v sessions. Samozřejmě pro jeden request se data stáhnou pouze jednou. Pokud bych je však měl uložená v sessions a chtěl bych pak třeba uživatele jako administrátor zablokovat nebo mu změnit roli tak bych buď musel dělat invalidační logiku, aby mi user ještě pár hodin/dnů nedělal akce v administraci jako zablokovaný nebo pod nesprávnou rolí. To je jen příklad.

Editoval MirekTH (21. 2. 2016 16:26)

GEpic
Člen | 566
+
0
-

MirekTH napsal(a):

Hurass napsal(a):
Chceš teda říct, že načítat několikrát a na několika místech uživatelská data je lepší, než si je prostě uložit do identity? Já bych řekl, že ne. Konec konců, ta identita je tam od toho, aby přesně tohle lidi nedělali.

Nene. Jen podle mého názoru nemá smysl ukládat tahle data v sessions. Samozřejmě pro jeden request se data stáhnou pouze jednou. Pokud bych je však měl uložená v sessions a chtěl bych pak třeba uživatele jako administrátor zablokovat nebo mu změnit roli tak bych buď musel dělat invalidační logiku, aby mi user ještě pár hodin/dnů nedělal akce v administraci jako zablokovaný nebo pod nesprávnou rolí. To je jen příklad.

Tak jednak můžeš mít data uložená v Identity, ale nikdy není problém, např. v BasePresenteru jeho roli radši v DB ověřit, a pokud by neseděla tak uživatele např. odhlásit.

Editoval GEpic (22. 2. 2016 7:34)

MirekTH
Člen | 20
+
+2
-

GEpic napsal(a):
Tak jednak můžeš mít data uložená v Identity, ale nikdy není problém, např. v BasePresenteru jeho roli radši v DB ověřit, a pokud by neseděla tak uživatele např. odhlásit.

Není už pak lepší ta data stahovat lazy a založit rozhodovací logiku na aktuálních datech, než si data cachovat a pak je pořád dokola ověřovat? To pak postrádá smysl.