konto usunięte

Temat: Koncepcja ACL-i

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

konto usunięte

Temat: Koncepcja ACL-i

Przemysław R.:
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

Moim zdaniem całkiem przyzwoicie sprawdza się w tym przypadku wzorzec Chain of Responsibility.

W ten sposób zaczynasz na liście metod do przetworzenia, zaczynasz od ACL jeśli przechodzi możesz zrobić jakiś proces zczytywania z cache'a, potem obsługa żądania i rendering strony.

Idea, którą przedstawiłem występuje np. w symfony i moim zdaniem to całkiem ciekawe rozwiązanie.
Stanisław P.

Stanisław P. Software designer

Temat: Koncepcja ACL-i

Jeśli chcesz jakąś "inną" koncepcję ACL'i to polecam oglądnięcie Pyramid. Tam idea wygląda następująco:

Request poza routingiem ma przypisaną ścieżkę do resource. Czyli np. poza tym że jest to '/cośtam/gdzieśtam/{id}' (routing) jest to też '/posts/{id}' (resource). Root resource jest znany. Potem zaczyna się szukanie "/" (root) -> "/posts" (root['posts']) -> "/posts/{id}" (root['posts'][123] na przykład). ACL jest sprawdzany w każdym resource - czyli "root" może np. mieć DENY-*-*, ALLOW-view-g:registered, ALLOW-*-g:admins. Potem "root['posts']" może mieć ALLOW-edit-g:editors. Sam post ma ALLOW-*-u:twórca Itd...

Oczywiście przy każdym stopniu ten resource może być generowany na żywo zależnie od elementu. Czyli jakiś szczególny post może mieć swojego przypisanego ACLa (u:twórca będzie konkretnym userem z bazy). Skąd te dane pochodzą i jak je generować zależy tylko od implementującego.

Teraz w strefie routingu każda ścieżka dostaje jeszcze parametr co jest wymagane, np. "view" w przykładzie wyżej.

Za pierwszym razem - wygląda bardzo zamieszanie. Później jest już super. Pyramid używa tych resource'ów trochę bardziej ponieważ są też przekazywane do kontrolera i można używać tych danych uzyskanych wcześniej... ale to już inna bajka.Stanisław P. edytował(a) ten post dnia 01.05.11 o godzinie 22:35
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Koncepcja ACL-i

hmm, nie wrzucal bym tego w ogole, jedynie wydzielil kod ktory obsluguje acl, i stworzyl plugin ktory mozna ale nie trzeba powiazac z bazowym kontrolerem, nic na sztywno :P

Następna dyskusja:

System komentarzy (Zend Acl)




Wyślij zaproszenie do