Ukládání perzistentních proměnných uživatele
- Vladik_hk
- Člen | 50
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
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?
- JakubJarabica
- Gold Partner | 184
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ť :)
- JakubJarabica
- Gold Partner | 184
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.
- Vladik_hk
- Člen | 50
jasne, je to "tady ":http://www.maxmind.com/app/php a priklady implementace zde "":http://geolite.maxmind.com/…oip/api/php/