Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] ACL - jak implementować?
Forum PHP.pl > Forum > Przedszkole
lkjhg
Jak zaimplementować ACL w swoich projektach?

Np. zend ma coś takiego

  1. $acl = new Zend_Acl();
  2. // Dodajemy rolę - Gość
  3. $acl->addRole(new Zend_Acl_Role("Guest"));
  4. // Dodajemy rolę - Użytkownik - i dziedziczymy z Gościa
  5. $acl->addRole(new Zend_Acl_Role("User"), "Guest");
  6. // Dodajemy rolę - Moderator - i dziedziczymy z Użytkownika
  7. $acl->addRole(new Zend_Acl_Role("Moderator"), "User");
  8. // Dodajemy rolę - Administrator - nie dziedziczymy
  9. $acl->addRole(new Zend_Acl_Role("Administrator"));


To jest dla mnie logiczne, ustawiam to np w index.php Jednak gdzie definiować kontrolę dostępu i gdzie sprawdzać? Mógłby to ktoś tak łopatologiczne wyjaśnić? Oparłem wszytko o MVC... To np. mam sprawdzać czy moderator jest moderatorem w którym momęcie? np w routerze? czy klasa którą wywołałem ma dziedziczyć po tym Zend_Acl?
Fifi209
Nie w routerze, w kontrolerze sprawdzasz czy ma uprawnienia do wykonywania danej akcji.
asdads
Ale w routerze mam coś takiego...

  1. $xx = new XX;
  2. $xx->metoda();


Czyli że w klasie XX w __construct mam sprawdzić to? I tak mam to zapisywać do każdej klasy?
Gość
Mógłby ktoś napisać to badziej dokładnie? W którym miejscu i jak to sprawdzić.
Fifi209
Wiesz co to kontroler? Kontroler ma akcje (metody) i wywołując taką metodę sprawdzasz w niej czy zalogowany ma uprawnienia do jej wykonania, czy to zapis np. newsa czy odczyt listy użytkowników.
Gość
Aha, czyli wszystkie motody (no prawie) powinny mieć na początku coś takiego:

  1. class Super
  2. {
  3. public function metoda_dodaj()
  4. {
  5. $acl-> isValid('metoda_dodaj')
  6. {
  7. // kod który się wykonuje gdy jest dostęp
  8. return true;
  9. }
  10. }
  11. }


A w którym momencie dodawać te reguły? w konstruktorze klasy?
amii
Tu masz to dobrze wytłumaczone: http://blog.wilgucki.pl/2011/05/zend_acl-w-praktyce.html
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.