![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 13.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam, to jest mój pierwszy temat na tym forum, jeśli wybrałem niewłaściwy dział to proszę o przeniesienie. Od paru godzin próbuję rozgryźć plugin sfGuardDoctrine. Oczywiście instalacja jest banalna, i wszystko działa gdy mam dwóch użytkowników np superadmina i zwykłego który próbuje się zalogować do backendu. Problem pojawia się dopiero wtedy gdy dodaję użytkowników którzy mają mieć tylko uprawnienia do frontendu i potrzebuję ograniczyć im dostęp do backendu.
Użytkownicy: Admin – uprawnienia useradmin User - nie zdefiniowano uprawnień Czyli taka kolejność przy której pojawia się problem: 1. Czyszczony cache i pamięć w przeglądarce 2. loguje sie jako Admin do backendu 3. wylogowanie z backendu 4. próba logowania jako User 5. wywala ze nie mam odpowiednich uprawnień czyli prawidłowo 6. więc próbuję znowu zalogować sie jako Admin i wywala mi ze też nie mam odpowiednich uprawnień i tu jest właśnie problem. Gdy wyczyszczę pamięć przeglądarki wtedy mogę znowu sie zalogować. Zauważyłem że po próbie logowania jako Admin trzyma mi w sesji dane User’a który próbował logować się przed Admin’em. Takie są ustawienia w pliku plugins/sfDoctrineGuardPlugin/modules/sfGuardUser/config/security.yml default: is_secure: on credentials: [useradmin] Jeśli miał już ktoś podobny problem byłbym wdzięczny za pomoc, podejrzewam ze rozwiązanie będzie banalne. Proszę pisać jeśli podałem za mało danych. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 13.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam, problem rozwiązałem dokładnie tak samo jak w linku który podał kusiu.
Czyli należało nadpisać metode executeSecure. class sfGuardAuthActions extends BasesfGuardAuthActions { public function executeSecure($request) { parent::executeSecure($request); $this->getUser()->signOut(); } } to rozwiązało problem $this->getUser()->signOut(); Czyli, jesli uzytkownik który nie ma odpowiednich credentials, próbuje sie zalogować, zostaje przekierowany do strony z odpowiednim komunikatem gdzie zmienna authenticated jest ustawiana na true. Tu własnie pojawia się problem ponieważ inny uzytkownik który ma uprwanienia nie jest wstanie się zalogować. Tak swoją drogą, dziwne zachowanie jesli uzytkownik nie moze sie zalogowac bo nie ma uprawnień i zmienna authenticated ustawia mu sie na true. Tzn moze jest to normalne zachowanie do momentu sprawdzania credentials ale po przekierowaniu na strone z komunikatem brak uprawnien powinno byc to zmienione na false. Wywołanie singOut() załatwia sprawę, czyli ustawia zmienną authenticated na false. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 13:38 |