![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Chciałbym napisać swój system ACL. Zastanawiam się jak go zaprojektować by był elastyczny. Bazę danych chcę zaprojektować tak:
acl_resources - zasoby id | resource acl_roles -> role id | role_name acl_permissions - tabela wiążąca 2 poprzednie, w permission określany jest dostęp lub nie id | resource_id | role_id | permission i jeszcze tabela users normalnie wykorzystywana do logowania Co powinien mieć dobry system ACL? Czy powinien mieć też możliwość przypisywania uprawnień konkretnemu użytkownikowi? Ten post edytował mentoos 19.08.2010, 11:41:33 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Ja w swoim systemie ACL mam 3-poziomowe sprawdzanie uprawnień. Uprawnienia przypisuję na poziomie zasobu, roli użytkownika oraz samego użytkownika. Mam napisaną funkcję w plsql, która dla podanego ID użytkownika zwraca mi listę uprawnień/zakazów. Jeżeli określenie uprawnienia występuje na kilku poziomach (np. dla roli jest odebrane, ale dla samego użytkownika przyznane) to, nadając priorytety uprawnieniom, zwraca wartość końcową (tj. w opisanym przypadku nadanie uprawnienia).
Co jeszcze byłoby przydatne? "Przestrzenie nazw" - tak to nazwałem - czyli po prostu typy zasobów. U mnie generalnie występują 3 typy: action (dla akcji, czyli kliknięcia), field (pozwala/zabrania modyfikacji pola w formularzu oraz w bazie danych - za jednym zamachem) oraz image (wyświetlanie obrazka). Mając zdefiniowane wspomniane typy zasobów możesz zrobić fajny myk. Ja osobiście pracuję z frameworkiem Kohana i wstrzyknąłem się bezpośrednio w helpery do budowy linków oraz tworzenia formularzy. Dzięki temu już podczas tworzenia linku (helperem html::anchor()) sprawdzam czy użytkownik ma uprawnienia do danej akcji. Jeśli tak - tworzę link, jeśli nie - wyświetlam go jako span class="access_denied". Do tego mam plugin w jQuery, który wszystkie elementy o klasie access_denied wyszarza tj. np. obrazki przekształca do skali szarości. W całości daje to bardzo fajny efekt. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 19:24 |