Va fi Django o alegere bună pentru un permisiuni bazat pe web-app?

voturi
12

Am fost explorarea detaliile Django timp de aproximativ o săptămână acum și place ce văd. Cu toate acestea am venit peste unele .. negativitate în ceea ce privește cu granulație fină controlul permisiunilor interfeței CRUD.

Ceea ce am scris este un Intranet de management client web-app. Organizația este de aproximativ 6 niveluri, și trebuie să restricționeze accesul la grupuri de clienți bazate pe niveluri. Se extind continuu. Am o idee destul de bună cum am de gând să fac asta, dar nu sunt sigur dacă voi fi capabil să-l integreze bine în interfața de pre-construit admin.

Am făcut zero absolut de dezvoltare Django altfel mi-ar avea, probabil, o idee mai bună dacă acest lucru ar funcționa sau nu. Eu, probabil, nu va folosi Django dacă interfața de administrare generată va fi inutil pentru acest proiect - dar cum am spus, există o încredere mare pe permisiuni personalizate cu granulatie fina.

Django mă va lăsa să personalizate construi permisiuni / reguli și integra perfect în interfața de administrare CRUD?

Actualizați-One: Vreau să folosesc aplicația de administrare pentru a minimiza repitition de a genera interfete CRUD, deci da consider că este un must have.

Actualizați Doi:

Vreau să descrie permisiunile necesare pentru acest proiect.

Un client poate aparține uneia sau mai multe „magazine“. angajati full time ar trebui să poată edita clienții la magazinul lor (chiar dacă acestea aparțin la un alt magazin) numai. Cu toate acestea, ele nu ar trebui să poată vedea / edita clienții la un alt magazin. Casuals ar trebui să fie doar posibilitatea de a vizualiza clienții bazate pe ceea ce magazin acestea sunt prea rostered (sau în cazul în care casual este conectat ca utilizatorul magazin - mai probabil).

Managementul deasupra lor trebuie să fie capabil de a vedea toți angajații pentru magazinele pe care le gestionează, nimic mai mult.

Conducerea superioară ar trebui să fie în măsură să editeze toți angajații și permisiunile de grant de mai jos ei înșiși.

După citirea documentației Django, se spune că nu poate (autmoatically) să setați permisiuni pentru un sub-set al unui grup. Numai întregul grup. Este destul de ușor să-și bată joc propriile tale permisiuni pentru acest scop?

Întrebat 24/10/2008 la 00:50
sursa de către utilizator
În alte limbi...                            


6 răspunsuri

voturi
7

Dacă am citit corect cerințele dumneavoastră actualizate, nu cred că sistemul de autorizare existent Django va fi suficient. Se pare ca ai nevoie de un sistem complet pe ACL.

Acest subiect a venit un număr de ori. Încercați googling pe Django + acl.

sampling aleatoare ...

A fost o vară de proiect Cod câțiva ani în urmă, dar nu sunt sigur în cazul în care au ajuns la. A se vedea http://code.djangoproject.com/wiki/GenericAuthorization

Există un bilet proaspăt la djngoproject.org care ar putea fi interesant:

Există un cod interesant isteațo pe dumpz.org:

... dar sunt zero documente.

Mult noroc!

Publicat 26/10/2008 la 00:49
sursa de către utilizator

voturi
5

Sistemul de permisiune Django în totalitate reguli. Fiecare model are un set prestabilit de permisiuni. Puteți adăuga noi permisiuni la modelul, de asemenea.

Fiecare utilizator are un set de permisiuni, precum și de membru de grup. Utilizatorii individuali pot avea permisiuni individuale. Și ei moștenesc permisiunile de la apartenența lor de grup.

funcțiile vizualizare (și template-uri) pot verifica cu ușurință prezența absenței acestor permisiuni la orice nivel de granularitate trebuie să utilizați.

Și dacă acest lucru nu este suficient pentru tine, Profilul add-on vă oferă încă mai multe opțiuni pentru definirea unui „utilizator“ și capacitățile lor, permisiuni, roluri, responsabilități, etc.

Și dacă acest lucru nu este de ajuns pentru tine, puteți defini propriile scheme de autentificare proprii.


Ceea ce este important nu este să încerce și să definească grupuri care sunt subseturi reale ale utilizatorilor, nu la întâmplare titluri sau roluri bine definite. N - ai nevoie pentru a „stabili permisiunile pentru un sub-set al unui grup“. Trebuie să aveți grupuri mai mici. Grupuri definite în jurul subseturi de oameni.

permisiunile implicite Django sunt în jurul valorii de acces de model, nu rând de acces într-un model. Pe de altă parte, problema ta este de aproximativ subseturi de rânduri, în mai multe modele: Client, Magazin, Angajat, Manager.

Vei avea nevoie de un set de bază de a lui FK printre aceste elemente, iar unele filtre pentru a subset rândurile. Este posibil să aveți probleme cu acest lucru cu pagini implicit admin. Poate fi necesar propria versiune de admin pentru a face uz de filtre specializate.


Dacă nu se poate face cu sistemul de permisiune Django, ar trebui să reconsidere situațiile de utilizare. Serios.

[Django-REST Interface, cu toate acestea, este o altă fiară în întregime, și necesită unele îngrijire și hrănire.]

Publicat 24/10/2008 la 02:58
sursa de către utilizator

voturi
3

ModelAdmin obiecte au has_add_permission, has_change_permission, has_delete_permissionși querysetmetodele care pot fi utilizate pentru a pune în aplicare permisiunile în jurul ceea ce utilizatorul conectat poate vedea si modifica - ai putea crea o subclasă care le folosește pentru a pune în aplicare orice permisiunile pe care doriți să pună în aplicare și să înregistreze toate modelele dvs. cu adminaplicația folosind subclasa ta.

Cu toate acestea, totul depinde cât de exact sistemul de permisiuni va funcționa - care sunt cerințele exacte care cad din permisiunilor granulatie fina? Cu cât te îndepărtezi de ceea ce adminaplicația a fost proiectat pentru a face, mai mult de lucru se va lua, dar există o mulțime de cârlige acolo pe care le puteți utiliza pentru a pune în aplicare cerințele personalizate. Iată un articol de blog de Luca Plant , care dă exemple de unele reglaj fin puteți face fără a fi nevoie să sape prea adânc.

Are absolut să se bazeze în jurul adminaplicației? Vizualizări generice și ModelForms poate avea grijă de o mulțime de biți plictisitoare implicate în punerea în aplicare CRUD, astfel încât să fie precaut de prea închis pe personalizarea admin- este aproape o tradiție Django pentru a începe prin obtinerea închis pe adminaplicație și ce poate și „t face, gândindu - mă la început nu va mai trebui să scrie din nou orice cod;)

Publicat 24/10/2008 la 01:06
sursa de către utilizator

voturi
2

Din django 1.2 există suport pentru permisiuni la nivel de rând, care django-gardian face foarte intuitiv de manevrat.

Publicat 10/08/2011 la 09:44
sursa de către utilizator

voturi
0

Am găsit doar http://bitbucket.org/jezdez/django-authority/ , se pare promițător.

Publicat 27/08/2009 la 02:08
sursa de către utilizator

voturi
0

Ați putea dori , de asemenea , să aibă o privire la granulare-permisiuni monkeypatch: http://code.google.com/p/django-granular-permissions/

Aceasta adaugă permisiunile la nivel de rând la sistemul permisiunea lui Django.

Publicat 27/11/2008 la 11:40
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more