neaktuální role uživatele
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- illi
- Člen | 1
Zdravím,
narazil jsem na zajímavou věc. Pokud se uživatel přihlásí, tak se mu
uloží jeho role a pak až do odhlášení je má nastavené. Takže pokud mu
je změním například v databázi, tak se to projeví až po
odhlášení.
Nevíte prosím jestli toto je požadované chování nebo někde dělám
chybu a nemělo by to takto fungovat?
Případně jestli se to dá nějak obejít.
Děkuji
- Filip Procházka
- Moderator | 4668
Tento „problém“ se obecně dá řešit tak, že si uděláš tabulku
přihlášených uživatelů a budeš tam mít jejich session_id
,
user_id
a čas vytvoření záznamu (přihlášení).
Velice jednoduchým dotazem
$fresh = dibi::select('1')->from('users_loggin_fresh')
->where('user_id = %i', $this->getUser()->identity->id)
->and('session_id = %s', $this->getSession()->getId())
->fetch();
pak zjistíš, jestli je jeho session v systému platná.
Nevýhody
- 1 SQL navíc při každém requestu pro každého uživatele, kterému mělo předcházet uložení uživatelských dat do session
Výhody
- dotaz je extrémně rychlý, pokud si nad
user_id
asession_id
uděláš index - můžeš systém donutit znovu-načíst uživatelská data a ovlivňovat tak jeho session
- můžeš uživatele kompletně odhlásit (například když ho zabanuješ, nemusíš čekat až se odhlásí:)
Editoval HosipLan (18. 9. 2011 7:52)