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
halfik
post
Post #2





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 17.05.2003
Skąd: Nysa

Ostrzeżenie: (10%)
X----


Cytat
Sytuacja jest taka: banowanie i odbanowywanie. Masz użytkownika, który ma jakiś niepowtarzalny zestaw ról, który jest trudno przywrócić. Wtedy wygodniej jest wprowadzić rolę banned niż usuwać całą listę roli. Jak będziesz chciał mu przywrócić uprawnienia to co zrobisz? Nie widzę innego logicznego rozwiązania.

tak jesli mowimy o systemach w ktorych uzyteczne jest tymczasowe blokowanie userow to bez sensu by bylo cos usuwac zeby to za jakis czas znowu dodawac/ustawiac.

Cytat
Co do grup to nie zrozumieliśmy się chyba. Grupy są na pewno potrzebne, tylko pytanie w jakiej formie? Ja mówię, że grupy mogą istnieć jako niebezpośrednie połączenie kilku ról. To znaczy, że wciąż istnieje podział na grupy i role (żeby nie obniżać elastyczności), ale grupy nie posiadają ról. Chcemy aby ktoś mógł tylko dodawać newsy, wtedy dostaje rolę addNews. Dzięki temu nie usunie go, ani nie zmodyfikuje. Jeżeli chcemy mieć "news admina", wtedy włączamy go do grupy newsAdmins. U ciebie ta grupa by posiadała role addNews, editNews, removeNews etc... U mnie po samej nazwie grupy można identyfikować co użytkownik może a co nie.

jesli dobrze zrozumialem chcesz miec grupy rol - zeby nie przypisywac userowi kazdej z nich osobo, oraz pojedyncze role, gdy user nie potrzebuje wiecej jak 1 roli - co sie moze zdarzyc.

bo widzisz mojde podejscie jest nieco inne. grupa jest dla mnie jakas tam podstawowa jednostka organizacyjna - pakuje userow w paczki. sam user dla mnie nie ma uprawnien. uprawnienia maja grupy do ktorych on nalezy. to gwarantuje spora przejrzystosc calosci.

wiec: ja chce miec grupy opisane przez role. zas Ty chce miec grupy rol. hmmm...
to prawie to samo. przy czym to podejscie do ktorego ja sie przykleilem jak zauwazyles jest bardziej elastyczne i daje ciut wieksze mozliwosci. jesli porobisz grupy opiszesz je rolami i do grup przydzielisz userow, to procz tego ze userzy maja to czego chcesz - jakies uprawnienia, to ulatwiasz sobie zarzadzanie userami.

zreszta nie bardzo mi sie podoba ze chcesz miec zarowno grupy rol jak i pojedyncze role. zalozmy ze bedziesz mial ciut tych userow w systemie. ze ich liczba bedzie rosla w czasie. i tak zalozmy co pare dni bedziesz zmuszony przydzielic np. 1-10 userom pojedyncze uprawnienie, za pare dni to samo i znowu. gdybys nawet mial grupe ktora jest opisana tylko przez pojedyncza role - po prostu dodajesz usera do grupy i sie dalej tym nie martwisz. niby to samo. ale... co jesli bedzie trzeba w jakis sposob zmienic ta role, usunac albo cos? bedziesz musial ja odebrac N userom kazdemu z osoba - ja tylko sciagne ja grupie. i jeszcze: a co jesli za jakis czas bedziesz musial dodac userom ktorzy moga dodac np. tego newsa role do np. usuwania i edycji newsow? bedziesz musial usunac im ta pojedyncza role i przypisac im grupe rol "newAdmin" - dobrze rozumuje? jesli tak to troszke to malo wygodne.

generalnie nie przekonuje mnie to Twoje rozwiazanie. nawet jesli nie potrzebujesz wiecej, to dlaczego sobie zamykac pewne drogi na przyszlosc? zostane przy swoim i bede sie upieral ze userzy do grup a grupy opisane przez role.

Cytat
Twoje rozwiązanie cechuje trochę większa elastyczność, ale musisz te dane gdzieś zapisać, a przy dużej ilości użytkowników, ról, grup, akcji może to być uciążliwe. Ja zwalam odpowiedzialność na projektanta, żeby przemyślał dokładnie podział odpowiedzialności. Wypadało by zastanowić się kiedy to się sprawdza, a kiedy nie. Dzisiaj chyba za późno dla mnie, jutro szkoła jeszcze...


to rozwiazanie sie sprawdza od dziesiecioleci - zauwaz ze wszyskie dystrybuje linuxow z niego korzysaja od zarania dziejow. nawet ms w koncu to docenil i w winach xp czy 2k juz masz podobne rozwiazania.

co do przechowywania danych - jesli user sie loguje do systemu - sciagam z bazy info o jego uprawnieniach i trzymam na sesji, zadne nowum. generalnie jak mamy obiekt np. new zakladam ze obiekt wie jakie trzeba miec role zeby wymusic na nim dane operacje. wiec sprawdzamy na bazie grupy usera i sciagamy role ktorymi te jego grupy sa opisane i ladujemy na sesje.

i nie rozumiem problemu z duza iloscia uzytkownikow. martwisz sie o obciazenie bazy? czy czego?

Cytat
Co do przechowywania danych - źle zadałem pytanie. Chodzi mi o pobieranie ról z grup i przenoszenie wszystkich odpowiedzialności pomiędzy żądaniami. Pewnie masz tablicę z rolami zapisaną w sesji i ciekawi mnie jak sobie radzisz z dużą ilością użytkowników posiadajacych dużą ilość ról.

hehe no wlasnie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
a jaki upatrujesz problem w duzej ilosci userow z duza iloscia praw?

Cytat
Jak wygląda u ciebie sprawa nietypowych użytkowników - gościa i administratora?

jesli idzie o goscia to nie nalezy do zadnych grup - zatem nie ma rol. ale... jesli do przegladania czegos co gosc powinien przegladac sa potrzebne juz role - to mozna zrobic grupe Goscie opisac je tymi podstawowymi rolami i jesli ktos wchodzi na www - bo zgaduje ze o tym rozmawiamy - automatycznie zostaje potraktowany jak czlonek grupy goscie, jesli sie zaloguje - zmieniaja sie jego grupy i role. w sumie to bedziemy mieli grupe ktora de facto nie ma zadnego usera hehe.

a jesli chodzi o admina. mozna porobc rozne rodzaje adminow. tych najwyzszych, pol-adminow, adminow jakis sekcji itd. - tworzysz grupy i nadajesz im all mozliwe role, czy np 75% moziwych rol - co Ci trzeba.

Cytat
A co jesli uzytkownik ma miec mozliwosc tylko edycji swoich newsow ?
Pozatym robi sie problem kiedy mamy np. forum i trzeba nadawac prawa moderacji ? Macie na to jakis pomysl poza pisaniem osobnego accessController-a ?


ja bym zrobil dla samych tylko newsow: grupe adminow - moga all, grupe pol adminow - moga all na swoich newsach - i pozniej przydziela usera do odp. grupy. a nadawnie praw do dodawnia newsow bez mozliwosic edycji troszke moja sie z celem. ale jesli ktos chce pewnym userom pozowlic dodawac i edytowac ale juz nie usuwac - robi sobie 3 grupy zwiazana z newsami i przypisuje jej te 2 role, a usera do grupy.

no forum tak samo jak wszystko inne. grupy i role. tylko ze takie forum z prawdziwego zdarzenia to mody ktore moga cos na jakiejs tam tylko czesci forum. hm... no ale im wiecej takich czesci forum tym wiecej rol i nic poza tym. czyli zrobi sie np. grupe adminow - nada jej all role zwiazane z forum i np. 5 roznych grup modow, ktorym sie nada np. full role ale tylko do 1 kawalka forum - kazdej grupie do innego. no i dalej przydzielamy userow do odp. grup. i mamy adminow, modow jak i modow ktorzy moga dzialac np. na 3/5 forum.

Ten post edytował halfik 8.12.2005, 03:58:45
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: 25.09.2025 - 19:51