Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Koncepcja ACL-i
prachwal
post
Post #1





Grupa: Zarejestrowani
Postów: 171
Pomógł: 18
Dołączył: 13.03.2009
Skąd: lublin

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


Witam

Buduję sobie framework - tak dla treningu - i zastanawiam się w którym miejscu dodać sprawdzenie dostępu do jakiegoś kontrolera. w kontrolerze, routerze a może gdzieś indziej?

Prosił bym bym o jakieś pomysły i koncepcje
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
pejott
post
Post #2





Grupa: Zarejestrowani
Postów: 81
Pomógł: 4
Dołączył: 15.02.2009

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


Może się to odbyć w obiekcie, który na podstawie danych z routera deleguje odpowiedni kontroler.
Albo jeśli stosujesz jakiś system eventów ( w niektórych fw nazywanych hookami... ) to stworzenie listenera i podpięcie go pod odpowiedni event jest też dobrym pomysłem.
Jeśli chcesz zobaczyć jak wygląda, rzucam linkami.

Event Dispatcher z Doctrine 2.0.

http://www.zyxist.com/en/archives/103, troszkę się pozmieniało ale popdpatrz samo API i przykłady użycia.

Cytując jednego z developerów "serwer doctrine-project.org ma czkawke", więc nie dam linka do dokumentacji.

Pozdrawiam.

@edit: literówka.

Ten post edytował pejott 1.05.2011, 18:08:53
Go to the top of the page
+Quote Post
LSM
post
Post #3





Grupa: Zarejestrowani
Postów: 64
Pomógł: 6
Dołączył: 20.03.2011
Skąd: Świdnica

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


To wiele zależy od sposobu komunikacji jaki sobie opracujesz między obiektami. Możesz to zrobić w głównym kontrolerze po którym będą dziedziczyć wszystkie inne. Możesz to zrobić w pliku głównym tzw. "bootstrap.php" przed wywołaniem kontrolera głównego. Wszystko zależy od tego jak będzie: czytelniej, wygodniej, i jak łatwo będziesz mógł modyfikować tworzoną aplikację na bazie takiego frameworka. Do tego jeszcze dochodzi sposób przechowywania informacji ACL. Czy to będzie baza danych czy to plik - wymyśl sobie jakiś fajny trik. (IMG:style_emoticons/default/nerdsmiley.png)
Również trzeba brać pod uwagę to czy ACL będzie ustawiany z jakiegoś panela administracyjnego czy tylko na poziomie pliku konfiguracyjnego lub bazy danych manualnie. To też może mieć wpływ na to jakie rozwiązanie zrobisz.
Także - wykonaj przetestuj i wybierz co Ci pasi najbardziej.

Ten post edytował LSM 9.06.2011, 09:38:24
Go to the top of the page
+Quote Post
bastard13
post
Post #4





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


Po pierwsze to stworzyłbym jakąś klasę acl'a do ustawiania ról, zasobów i praw do zasobów. Takie dane można wpisać z palca lub pobrać z bazy, to już mało istotne. Oprócz tego jakaś klasa do autoryzacji, w której będziesz miał odpowiednią metodę sprawdzającą uprawnienia. I instancje można rejestrować w index.php, bootstrap.php, czy jakkowlwiek nazwiesz plik inicjujący środowisko frameworka.
A już rzeczywiste odpalenie metod tej klasy do autoryzacji wykonywałbym we front controllerze, to chyba najodpowiedniejsze miejsce.
Go to the top of the page
+Quote Post
Hellz
post
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 1.01.2007

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


Poczytaj o security w dokumentacji Symfony 2 (łącznie z przepisami), nowoczesne i bardzo dobre podejście.
Go to the top of the page
+Quote Post
zend
post
Post #6





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


Nie postawiłeś sobie jeszcze jednego ważnego pytania, co będziesz sprawdzał acl'em. Czy fizyczne zasoby typu modul/kontroler/akcja czy może będziesz chciał pracować na danych tzn. czy user A może edytować zasób B. Do obu zastosowań polecam Zend_Acl, a tu przykład jak używać tego do sprawdzania dostępu do danych klik

W skrócie
  1. $articleRow;
  2. $identity = new Identity();
  3.  
  4. $bool = $acl -> isAllowed($articleRow, $identity , 'edit');
  5.  
Go to the top of the page
+Quote Post

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: 24.12.2025 - 11:56