„Prihlásený“ neprihlásený užívateľ
- tolljump
- Člen | 47
Dobry den.
Vsimol som si v Mozille jeden velmi zvlastny a hlavne podstatny problem, ktory musim unahlene riesit. Na stranke mam komponent, ktory zobrazuje prihlasovaci formular pre neprihlasenych uzivatelov a automaticky ked je prihlaseny, tak sa tam zobrazia informacie o prihlasenom uzivatelovi. To je vsetko v poriadku. No teraz vidim ze sa v systeme uzivatel javi ako neprihlaseny (zice mam hore znova prihlasovaci formular) no Nette debug panel hlasi prihlaseneho uzivatela. Taktiez mam pristup do editacie profilu daneho uzivatela. Kde moze byt chyba?? Stalo sa to uz niekomu?
Jedna uzivatelka mi uz hlasila aj podivny problem ze sa jej nedari prihlasit pomocou formulara cez Mozillu, co sa mi este nestalo. Nerozumiem tomu…
Dakujem za rady
- tolljump
- Člen | 47
Praveze nie, pretoze ja som sa vobec neodhlasoval. Len som sa prihlasil bez zapamätania prihlasenia, co mam nastavene v session na expiraciu po 20 minutach. Po nejakej pol hodinke som sa vratil na stranku, zobrazuje ma ako odhlaseneho, ale pritom Identity ostalo zapisane a dostanem sa do editacie profilu napriklad. Co je obrovska bezpecnostna chyba…
- tolljump
- Člen | 47
…pomocou isLoggedIn(). Ale v tomto pripade pomocou Authorizator-a a
Permissions.
Cize touto funkciou:
public function actionProfile(){
if(!$this->user->isAllowed('user','profile')){
$this->flashMessage('Musíte sa prihlásiť, aby ste mohli upravovať svoj profil','error');
$this->redirect('Homepage:');
}
}
Editoval tolljump (16. 2. 2013 15:47)
- JakubTN
- Bronze Partner | 49
No zjavne ti po odhlaseni ostava ulozena identita a tym padom je splnena tvoja podmienka. Ak nemas overovanie cez isLoggedIn() niekde na zaciatku celeho presenteru (metoda startup alebo nieco podobne) tak ho skus pridat do tej tvojej actionProfile
public function actionProfile(){
if(!$this->user->isLoggedIn() || !$this->user->isAllowed('user','profile')){
$this->flashMessage('Musíte sa prihlásiť, aby ste mohli upravovať svoj profil','error');
$this->redirect('Homepage:');
}
}
- enumag
- Člen | 2118
To by nemělo být nutné. Při volání isAllowed se volá User::getRoles a ta si kontroluje zda je uživatel přihlášen. Pokud ne tak vrátí jen roli „guest“ a ne role té staré identity. Metoda isAllowed vrátí FALSE protože role guest by tyhle věci rozhodně neměla mít povolené (to už záleží na autorizátoru).