![]() |
![]() ![]() |
![]() |
![]()
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: 16 Pomógł: 3 Dołączył: 22.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
czy próba logowania (4) udaje się ? tzn czy użytkownik jest zalogowany (wydaje mi się ze powinien być pomimo że masz brak uprawnień). czy pomiędzy 5 i 6 wylogowałes usera ? P.S. Configi nie ustawia się w pluginie tylko w aplikacji/module/projekcie a w tym przypadku apps/backend/config/security.yml P.S.2. Po przeczytaniu jeszcze raz Twojego posta wydaje mi się, że na 99% to problem z configiem ustaw go we właściwym miejscu podanym wyżej. Ten post edytował mkopytko 13.07.2011, 20:42:57 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 13.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za szybką odpowiedź.
czy próba logowania (4) udaje się ? tzn czy użytkownik jest zalogowany (wydaje mi się ze powinien być pomimo że masz brak uprawnień). - tu user nie może sie zalogować i tak ma być (tzn. tak chcę żeby było:)) pojawia mu się komunikat Oops! The page you asked for is secure and you do not have proper credentials czy pomiędzy 5 i 6 wylogowałes usera ? - pomiędzy 5 i 6 user nie jest zalogowany bo wywala mu powyższy komunikat P.S. Configi nie ustawia się w pluginie tylko w aplikacji/module/projekcie a w tym przypadku apps/backend/config/security.yml Wiem że się nie ustawia ale można, wiem że bardziej poprawnie jest tak jak mówisz ale taką opcje też sprawdziłem, nawet stworzyłem plik w backend/modules/sfGuardUser/config/security.yml ale też nie działa P.S.2. Po przeczytaniu jeszcze raz Twojego posta wydaje mi się, że na 99% to problem z configiem ustaw go we właściwym miejscu podanym wyżej. Nadal nie działa pomimo zmiany miejsca, mogę podać szczegółową konfigurację. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 3 Dołączył: 22.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
rozumiem, że masz dwa typy userów Admin i Zwykły tylko admin powinien mieć dostęp do backendu ale logować powinien się móc każdy (pamiętaj, że zalogowany user jest dla wszystkich aplikacji) więc nie możesz ustawiać dla modułu sfGuardUser uprawnień . Backend powinien mieć natomiast w pliku: apps/backend/config/security.yml default: is_secure: true credentials: [useradmin] Sprawdziłem u mnie takie ustawienia i działają zgodnie z oczekiwaniami. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 13.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co jest w ksiazkach to cos takiego:
is_secure: true credentials: [useradmin] mozna ustawic w danym module dla poszegolnych akcji, czyli tworzac w danym module katalog config i plik security.yml http://www.symfony-project.org/book/1_2/06...action_security Tak, chce zeby uzytkownik z uprawnieniami administratora jako jedyny mial dostep do modulow guard a reszta uzytkownikow zeby nie miala takich uprawnien. Bylbym wdzieczny jak bys mi opisal albo wyslal swoj projekt testowy. Ok, sprawa rozwiazana, choc chetnie poznam rozwiazania innych |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 3 Dołączył: 22.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli sprawę rozwiązałeś to podziel się rozwiązaniem z innymi - będzie na przyszłość jakby ktoś szukał pomocy.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 13.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
OK, postaram się to opisać ale dopiero w sobote bo teraz nie mam czasu.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 163 Pomógł: 10 Dołączył: 24.01.2006 Ostrzeżenie: (30%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
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: 22.08.2025 - 06:12 |