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 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%)
|
Nie chodzi o samo wywoływanie akcji, ale dostęp do niej. Poza tym rozwalając metody autoryzujące po nie wiadomo jakiej liczbie klas zwiększasz prawdopodobieństwo wystąpienia błędu, a w przypadku kontroli dostępu jest to problem krytyczny. Poza tym wywołanie metod statycznych w dynamicznym konktekście (nazwa akcji jest znana dopiero podczas wykonywania programu) jest nieeleganckie i na pewno nie polepsza jakości kodu.
Wyobraź sobie tą sytuację z własnymi newsami... Użytkownik posiada rolę editNews, ale akcja wymaga od niej jeszcze parametru "OWN". Kontroler autoryzacji nie wie w jaki sposób ma "zdobyć" ten parametr - on zna tylko statyczne, które są zapisane do bazy. Akcja podpowiada, że obiekt pomocniczy będzie wiedział co zrobić w tej sytuacji. Kontroler tworzy instancję klasy pomocniczej, a następnie prosi ją o wykonanie niezbędnych kroków. W tym przypadku obiekt pomocniczy wyciąga wiadomość z bazy, porównuje identyfikator użytkownika z identyfikatorem autora. Jeżeli wszystko się zgadza, to dopisywany jest parametr "OWN" do roli editNews. Dalsza część jest standardowa - sprawdzamy czy role się pokrywają i stwierdzamy, czy użytkownik może wywołać akcję. Zauważ, że kod klasy pomocniczej będzie miał zaledwie kilka linijek, a jego wykonanie będzie prawie niezauważalne pod względem wydajności (pomijając czas zapytania do bazy... ale przecież newsa nie trzeba pobierać drugi raz, dlatego można przechować go gdzieś, aby uniknąć ponownego wywołania tego samego zapytania). |
|
|
|
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
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 ![]() ![]() |
|
Aktualny czas: 17.12.2025 - 21:30 |