Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] sfGuardDoctrine + credentials, Problem z uprawnieniami do sfGuradDoctrine
ginjall
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ginjall
post
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.

Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 13:38