Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] uwierzytelnianie a filtry
klarkid
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 6.10.2011

Ostrzeżenie: (0%)
-----


czesc,

napisalem sobie filtr, ktory przed wykonaniem kazdej akcji ma pobierac z bazy danych uwierzytelnienia i nadawac je uzytkownikowi, wyglada mniej wiecej tak:
  1. class sprawdzPrzywileje extends sfFilter {
  2.  
  3. public function execute($filterChain) {
  4.  
  5. if($this->getContext()->getUser()->isAuthenticated()) {
  6. $this->getContext()->getUser()->clearCredentials();
  7. // operacje zwiazane z baza danych ...
  8. foreach ($aWynik as $przywilej) {
  9. $this->getContext()->getUser()->addCredentials($przywilej[1]);
  10. }
  11.  
  12. }
  13. $filterChain->execute();
  14. }
  15. }

i w pliku filters.yml dodalem go tak (probowalem rowniez wrzucic przed security):
  1. rendering: ~
  2. web_debug: ~
  3. security:
  4. class: sfBasicSecurityFilter
  5. param:
  6. type: security
  7. # generally, you will want to insert your own filters here
  8. przywileje:
  9. class: sprawdzPrzywileje
  10. cache: ~
  11. common: ~
  12. flash: ~
  13. execution: ~

problem w tym, ze jesli zabezpiecze jakas akcje (np. w module moniotr, akcja pokaz):
  1. pokaz:
  2. is_secure: on
  3. credentials: monitorPokaz

to mimo to, ze w takie prawo zostalo dodane userowi:
  1. symfony/user/sfUser/authenticated: 1
  2. symfony/user/sfUser/credentials:
  3. - monitorPokaz
  4. - archiwumPokaz
  5. - archiwumTabela
  6. - archiwumWykres
  7. - punktyPokaz
  8. - punktyDodaj
  9. - punktyUsun

sprawdzone rowniez
  1. print_r($sf_user->listCredentials());
  2. // Array ( [0] => monitorPokaz [1] => archiwumPokaz [2] => archiwumTabela [3] => archiwumWykres [4] => punktyPokaz [5] => punktyDodaj [6] => punktyUsun )

przy probie dostepu do tej akcji otrzymuje strone z komunikatem
"Credentials Required
This page is in a restricted area."

Przypuszczam ze mam cos pokopane z lancuchem filtrow. Gdzie powinienem umiejscowic swoja funkcje sprawdzPrzywileje?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Zacznę od tego, że nazwa klasy jest nie trafiona, ponieważ opisuje całkiem inne zadanie.
Kolejność powinna być odwrotna, najpierw powinieneś uruchamiać swój filtr (przywileje), a następnie security.
Nie mam pomysłu co może być nie tak, więc najlepiej będzie jak sobie zdebugujesz, swój filtr i security filtr.

Swoją drogą nie wiem czy wiesz, ale uprawnienia są zapisywane do sesji, więc nie musisz ich ustawiać za każdym razem, wystarczy przy logowaniu, a potem np. sprawdzać tylko czy się zmieniły.
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: 26.12.2025 - 16:20