Ukládání perzistentních proměnných uživatele

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

Zajímalo by mne jak je nejlepsi resit ukladani perzistentnich promennych napr. uzivatele. Konkretne napr. pokud si zjistim aktualni IP uzivatele, kterou pak pouzivam napric aplikaci, tak by se mi libilo ulozit ji primo do objektu User, ktery je take perzistentni.

Vim, ze dosahnu stejneho efektu, pokud to ulozim do session, ale zda se mi hezci ukladat vsechny informace vztahujici se k uzivateli primo k tomuto objektu User a mit vse na jednom miste. Je to mozne a je to vhodne reseni?

Resp. mozne je to urcite, pokud si nadeklaruju takovou promenou na tvrdo do tridy User (v tomto pripade neco jako $currentIpAddress), ale nechce se mi take zbytecne zasahovat do kodu Nette.

Vladik_hk
Člen | 50
+
0
-

Jeste jedna vec k tomuto tematu. Napr. pokud mam neregistrovane a registrovane uzivatele a oba maji pravo na urcitou akci pro kterou ale potrebuji znat jejich mesto. U registrovaneho a prihlaseneho uzivatele si jeho mesto nactu z databaze do objektu User, u neprihlaseneho si ji zjistim pres geoip a NEKAM ulozim.

Jde o to, ze at jsem mesto ziskal jakkoli, vsude jej pouzivam stejne, takze by bylo idealni kdyby bez ohledu na zdroj jeho ziskani mohlo byt ulozeno na stejnem miste, abych nemusel pri kazdem jeho pouziti kontrolovat zda je uzivatel prihlasen a mam mesto ulozene tady nebo neni a mam jej ulozene nekde jinde.

Co myslite?

Solution
Člen | 50
+
0
-
  1. https://forum.nette.org/…dzi-metodami
  2. Sepiš nějakou továrničku.
bojovyletoun
Člen | 667
+
0
-

A co User->identity->data

JakubJarabica
Gold Partner | 184
+
0
-

Nette\Security\Identity

Zvyčajne do posledného parametra posielam asiociatívne pole hodnôt, ktoré potrebujem pre daného prihláseného usera naprieč aplikáciou. Tento objekt by mal byť vracaný v implementácii tvojho Authenticator-u, takže sa to vytvorí pri prihlasovaní používateľa.

Pozor na jednu vec – ak používateľ zmení napr. mesto počas jeho session, treba to nastaviť nielen v DB ale aj v session alebo vynútiť odhlásenie – nie moc dobré.

K dátam v identite budeš pristupovať cez $this->user->identity->data. (kontext presenteru)

Nepotrebuješ tak nič v Nette prepisovať :)

Vladik_hk
Člen | 50
+
0
-

aaa diky kluci

Vladik_hk
Člen | 50
+
0
-

To ukladani do identity pres objekt usera ma asi tu nevyhodu, ze dokud se neprihlasim, tak neexistuje. Takze jej mohu vyuzit zrejme az po prihlaseni? Nasel jsem v session jmenny prostor „identity“, nekryje se nahodou s uloznym prostorem pro data objektu identity?

JakubJarabica
Gold Partner | 184
+
0
-

Neviem presne ako to interne funguje, ale ak ten session menny priestor nepouzivas ty, bude to mat Nette. $this->user->data vracia myslim NULL pri implicitnej identity(guest). Nemyslim si, ze je problem volat $this->user->isLoggedIn() pred pristupom k tymto datam(resp. skor, v zavislosti od navrhu). Neviem ako mas navrhnutu appsku, no podla mna beztak ju nejako musis osetrit na prihlasenych/neprihlasenych.

joseff
Člen | 233
+
0
-

Sice je to uplne mimo, ale muzu se zeptat jak resis to zjistovani mesta pres geoip? Jestli sem treba nemuzes hodit kus toho kodu co to zjistuje ja neco podobneho zrovna resim :-)

Vladik_hk
Člen | 50
+
0
-

jasne, je to "tady ":http://www.maxmind.com/app/php a priklady implementace zde "":http://geolite.maxmind.com/…oip/api/php/