Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> kontrola dostepu
evo
post
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 4.02.2003

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


Witam,


Chial bym rozpoczac dyskusje na temat w jaki sposob projektuje sie system z kontrola dostepu.

Osobiscie jestem na etapie mojego pierwszego projektu ,ktory wymaga wiecej niz dwoch stanow (admin, user), wymaga on grup o roznym zakresie dostepu do systemu

Zabardzo nie wiem jak sie do tego zabrac.

Sam moj system/jadro laduje odpowiednie wtyczki,ktore sa odpowiedzialane za dostep do danych. Do tej pory kontrolowalem dostep na polacie wyboru akcji, bo kazdy plugin choc do innei zawartosci obsluguje te same akcje (add,remove,edit,show) wiec po wyborze wtyczki lecz przed wyborem akcji sprawdzalem czy uzytkownik ma prawo do tego, lecz teraz potrzebje wiekszej wolnosci tzn. niektorzy moga miec dostep do czegos do czego inni nie i na odwrot.

I zastanawiam sie czy nie przeniesc kontroli dostepu do samych akcji dostepu do danych, czy moze lepiej wymagac od wtyczki by opisala kto ma do jakich akcji dostep a sama kontrole zostawic w jadrze.




Wszelkie uwagi i pomysly sa mile widziane jak i wszelkiego rodzaju materialy, ktore wcale nie musza byc oparte na przykladach php, lecz duzym plusem by bylo gdyby opisywaly schemat kontroli dostepu w aplikacjach web. Jezyk Niemiecki,Angielski lub Polski.

Z gory dziekuje i pozdrawiam
evo
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Ludvik
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Nic nie jest na stałe zakodowane. Wpisy do bazy wymagają tylko lekkiej zmiany. Standardowo robimy tak:
Kod
Akcja:
name = actionName
neededGroups = groupOne, groupTwo

Zmieniamy na taki kod
Kod
neededGroups = groupOne($param1, const, 1);groupTwo


Kontroler wie, że $param1 określa wartość parametru o nazwie "param1" przekazywanego do akcji. "const" do stały łańcuch znakowy, do którego będziemy porównywać parametry ról użytkownika.

Skąd kontroler ma wiedzieć jakie są parametry akcji? To proste, u mnie silnik jest zaprojektowany podobnie do phienda2. Na początku router tworzy na podstawie żądania http obiekt kontekstu, w którym przechowujemy m.in. nazwę akcji oraz jej parametry. Następnie wywoływane są filtry zgodnie z wzorcem Intercepting Filter. To każdego filtru trafia obiekt kontekstu i to na nim są dokonywane zmiany. Z niego wiemy o nazwie akcji oraz jej parametrach. Jeżeli coś nam w filtrze nie pasuje, to modyfikujemy te dane. Wystarczy stworzyć authorizingFilter i wkomponować w niego kontroler dostępu. Jak będzie czas to wezmę się za to, w tej chwili szukam czasu, żeby tutaj coś napisać i odpocząć. Koniec semestru, męczą nauczyciele...

Jaki interfejs dostanie administrator strony (nie programista)? To też nie jest problem, trzeba tylko umieć odpowiednio złożyć wszystko do kupy. Przynajmniej ja nie widzę w tym problemu. Oczywiście jeżeli chcesz mieć dokładnie wszystko dostępne bez ingerencji bezpośredniej do kodu/bazy, to trochę roboty będzie. Ale jak chciałbyś zrobić to bez parametryzowania? Obsługa specjalnej grupy to jest ingerencja w kod kontrolera/akcji, a tego nie chcemy... Raz zakodowany elastyczny system sprawdzi się lepiej niż system z licznymi wyjątkami. Zauważ, że przy parametryzowaniu takie dziwne sytuacje to norma. Po tym co przeczytałem o twoim rozwiązaniu taki użytkownik byłby wyjątkiem. A im więcej wyjątków tym więcej kodu, więcej miejsc, w któreych możesz popełnić błąd, zwiększenie stopnia złożoności... Nie widzę żadnych korzyści.

Tak więc jak mówiłem... Znajdę trochę czasu to przedstawię jakąś wersję powiedzmy samego panelu do administracji uprawnieniami, jak mówiłeś to by cię najbardziej interesowało. Zasadę działania kontrolera opisałem post wcześniej, więc z implementacją nie powinno być problemu.
Go to the top of the page
+Quote Post

Posty w temacie
- evo   kontrola dostepu   3.12.2005, 17:50:54
- - Ociu   Nauczyłem się używać i będę polecał: F-L-A-G-I. P...   3.12.2005, 20:55:09
- - Ludvik   Osobiście stosuję autoryzację opartą na grupach i ...   3.12.2005, 22:52:52
- - Ociu   coś podobnego miałem na myśli. [PHP] pobierz, pla...   4.12.2005, 09:17:15
- - Ludvik   Co do twojego kodu: Ja bym nie dopuścił akcji do ...   4.12.2005, 11:58:21
- - SongoQ   Mam troszeczke inne podejscie, wiekszosc uprawnien...   4.12.2005, 12:53:40
- - Ociu   Cytat(Ludvik @ 2005-12-04 12:58:21)Ja bym nie...   4.12.2005, 13:26:43
- - halfik   ja takie rzeczy tez robie w oparciu o grupy i role...   5.12.2005, 16:39:26
- - Ludvik   Ja bym wyróżnił zabranianie od braku uprawnień... ...   5.12.2005, 20:32:15
- - halfik   CytatJeżeli mówisz, że jedna grupa nie posiada ról...   6.12.2005, 18:18:40
- - Ludvik   Cytatchociaz pewnie zdarza sie systemy, w ktorych ...   8.12.2005, 00:46:41
- - NuLL   CytatCo do grup to nie zrozumieliśmy się chyba. Gr...   8.12.2005, 01:00:18
- - halfik   CytatSytuacja jest taka: banowanie i odbanowywanie...   8.12.2005, 03:53:05
- - Ludvik   CytatA co jesli uzytkownik ma miec mozliwosc tylko...   8.12.2005, 20:00:28
- - halfik   hmmm a w jakis sposob chcesz parametryzowac te gru...   8.12.2005, 20:10:00
- - Ludvik   Wygląda to tak: Mamy akcję, która manipuluje dany...   8.12.2005, 21:56:22
- - halfik   no dobra, a skad kontroler ma wiedziec jakie sa mo...   9.12.2005, 11:39:23
- - Ludvik   Nic nie jest na stałe zakodowane. Wpisy do bazy wy...   9.12.2005, 21:33:57
- - halfik   CytatJak będzie czas to wezmę się za to, w tej chw...   10.12.2005, 01:15:19
- - Ludvik   Nie chodzi o to, że grupy są specjalne, ale trzeba...   11.12.2005, 11:38:31
- - Ace   małe obiekciki - najprosciej by bylo potraktowac j...   11.12.2005, 16:25:37
- - Ludvik   Rzecz w tym, aby nie tworzyć niepotrzebnych grup, ...   11.12.2005, 17:44:10
- - Ociu   Myślę, że można zrobić tak: Groups Kod| id | name...   11.12.2005, 17:48:45
- - Ludvik   A jak ktoś zechce dodać możliwośc przenoszenia? Mo...   11.12.2005, 18:01:03
- - halfik   ta ta tabela z rolami jest to chrzanu. wlasnie o ...   16.12.2005, 19:19:20
- - ebe   U mnie jest tak 3 akcje podstawowe, add, edit, del...   16.12.2005, 19:40:33
- - Ludvik   Hmmm... trochę niejasny ten opis dla mnie, przynaj...   17.12.2005, 21:05:03
- - splatch   uprawnienia ograniczone do read, write, delete to ...   19.12.2005, 09:37:11
- - sopel   Cytat(splatch @ 2005-12-19 09:37:11)Moim zdan...   19.12.2005, 10:27:49
- - NuLL   Cytatta ta tabela z rolami jest to chrzanu. wlasn...   19.12.2005, 10:36:27
- - bela_666   Ja tam wiem jak to rozwiązać Mamy sobie globalny ...   19.12.2005, 13:55:33
- - Ludvik   CytatCytat ta ta tabela z rolami jest to chrzanu. ...   19.12.2005, 17:20:21
- - sopel   hmmm, przyznam ze do konca nie przemawia do mnie, ...   19.12.2005, 19:21:14
- - Ludvik   Nie chodzi o samo wywoływanie akcji, ale dostęp do...   19.12.2005, 19:41:45
- - bela_666   Cytat(Ludvik @ 2005-12-19 18:20:21)Bela666: J...   19.12.2005, 21:55:15
- - Ludvik   Z tą różnicą, że znowu musisz się bawić w porównan...   19.12.2005, 22:04:01
- - eai   Ja rozwiązałem całość w ten sposób. tabela groups...   20.10.2006, 13:27:00


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: 13.10.2025 - 19:44