Czy Django będzie dobry wybór dla uprawnienia oparte internetowej aplikacji?

głosy
12

Byłem odkrywania szczegóły Django przez około tydzień, a teraz to, co widzę. Doszedłem jednak na niektóre .. negatywnych w stosunku do drobnoziarnistych kontroli uprawnień do interfejsu CRUD.

Co piszę jest zarządzanie web-app klient Intranet. Organizacja jest około 6 poziomy, i muszę ograniczyć dostęp do grup klienckich opartych na warstwach. Nieustannie się rozwija. Mam dość dobry pomysł, w jaki sposób mam zamiar to zrobić, ale nie jestem pewien, czy będę w stanie go zintegrować również w pre-wbudowany interfejs administratora.

Zrobiłem absolutnie zerowy rozwój Django inaczej pewnie bym miał lepszy pomysł na to, czy to będzie działać czy nie. I prawdopodobnie nie będzie używać Django jeśli generowane interfejs administracyjny będzie bezużyteczny do tego projektu - ale jak już mówiłem, nie jest zdawanie się na drobnoziarnistych uprawnień niestandardowych.

Django będzie pozwól mi budować niestandardowe z uprawnieniami / zasady i zintegrować go bezproblemowo do interfejsu administratora CRUD?

Aktualizować One: Chcę użyć aplikacji administratora, aby zminimalizować repitition generowania interfejsów CRUD, więc tak uważam musi to mieć.

Aktualizować dwa:

Chcę opisać uprawnień wymaganych dla tego projektu.

Klient może należeć do jednej lub wielu „sklepach”. Etatowych pracowników powinni mieć możliwość edycji klientom w ich sklepie (nawet jeśli należą do innego sklepu) tylko. Jednak nie powinny one być w stanie zobaczyć / edytować klientów w innym sklepie. Casuals powinien być w stanie wyświetlić tylko klientów na podstawie tego, co sklep są dyżury zbyt (lub jeśli na co dzień jest zalogowany jako użytkownik sklepu - bardziej prawdopodobny).

Zarząd nad nimi muszą być w stanie zobaczyć wszystkich pracowników w sklepach, którymi zarządzają, nic więcej.

Zarząd powinien mieć możliwość edycji wszystkich pracowników i uprawnienia dotacje poniżej siebie.

Po zapoznaniu się z dokumentacją django, to mówi nie można (autmoatically) ustawić uprawnienia dla podzbioru grupy. Tylko cała grupa. Jest to dość łatwe do makiety własne uprawnienia do tego celu?

Utwórz 24/10/2008 o 00:50
źródło użytkownik
W innych językach...                            


6 odpowiedzi

głosy
3

ModelAdmin obiekty mają has_add_permission, has_change_permission, has_delete_permissioni querysetmetody, które mogą być wykorzystywane do egzekwowania uprawnień wokół co zalogowany użytkownik może zobaczyć i modyfikować - można utworzyć podklasę, która wykorzystuje te egzekwować cokolwiek uprawnienia chcesz wdrożyć i zarejestrować wszystkie swoje modele z adminaplikacji przy użyciu podklasy.

Jednak wszystko zależy od tego, jak dokładnie system uprawnienia będą działać - jakie są dokładne wymagania, które wypadają ze swoich uprawnień drobnoziarnistych? Im bardziej oddalają się od tego, co adminwniosek został zaprojektowany do zrobienia, tym bardziej działa to zajmie, ale istnieje wiele haczyków tam, które można wykorzystać do realizacji swoich własnych wymagań. Oto blogu od Luke'a Zakładu co daje przykłady niektórych dostrajania można zrobić bez konieczności kopać zbyt głęboko.

To absolutnie muszą opierać się na adminzastosowaniu? Generic poglądy i ModelForms może zająć dużo żmudny bitów zaangażowanych we wdrażanie CRUD, więc uważać , że wszystko się powiesił na dostosowanie admin- to prawie Django tradycja zacząć od coraz odłożył na adminaplikacji i co może, a może „t zrobić, początkowo myślał, że nigdy nie będziesz musiał ponownie pisać żadnego kodu;)

Odpowiedział 24/10/2008 o 01:06
źródło użytkownik

głosy
5

System pozwolenie Django całkowicie zasady. Każdy model posiada domyślny zestaw uprawnień. Można dodać nowe uprawnienia do swoich modeli, również.

Każdy użytkownik ma zestaw uprawnień, a także członkostwa w grupie. Poszczególni użytkownicy mogą mieć indywidualne uprawnienia. A oni dziedziczą uprawnienia z ich przynależności grupowej.

Państwa zdanie funkcje (i szablony) można łatwo sprawdzić obecność braku tych uprawnień na dowolnym poziomie szczegółowości należy użyć.

A jeśli to nie wystarczy dla ciebie, profil dodatek daje jeszcze więcej możliwości definiowania „Użytkownik” i ich możliwości, uprawnienia, zadania, zakres odpowiedzialności, itp

A jeśli to nie wystarczy, można zdefiniować własne systemy uwierzytelniania.


Ważne jest, aby nie próbować zdefiniować grupy, które są rzeczywiste podzbiory użytkowników, a nie od niechcenia określonych tytułów lub role. Nigdy nie trzeba „ustawić uprawnienia dla podzbioru grupy”. Trzeba mieć mniejsze grupy. Grupy zdefiniowane wokół podgrupach osób.

Domyślne uprawnienia Django są wokół dostępu modelu, nie row dostęp w ramach modelu. Z drugiej strony, problem jest o podzbiorów wierszy w kilku modelach: Klient, sklep, pracownik Manager.

musisz podstawowy zestaw FK pośród tych elementów, a niektóre filtry do podzbioru wierszy. Możesz mieć problemy ze stron robi to domyślny administratora. Może trzeba własną wersję administratora do korzystania z wyspecjalizowanych filtrów.


Jeśli nie można tego zrobić z systemem uprawnień Django, powinieneś przemyśleć swoje przypadki użycia. Poważnie.

[Django spoczynkowej Interfejs jest jednak zupełnie inne zwierzę i wymaga pielęgnacji i karmienia].

Odpowiedział 24/10/2008 o 02:58
źródło użytkownik

głosy
7

Jeśli czytam zaktualizowane wymagania poprawnie, nie sądzę istniejący system auth Django będzie wystarczająca. Brzmi jak trzeba pełnego systemu na ACL.

Temat ten ma pochodzić kilka razy. Spróbuj googlowania na Django + ACL.

Losowe pobieranie próbek ...

Było Summer of Code projekt kilka lat temu, ale nie jestem pewien, gdzie dostali się. Zobacz http://code.djangoproject.com/wiki/GenericAuthorization

Jest świeży bilet na djngoproject.org że może być interesujące:

Istnieją pewne interesujące kodu snips na dumpz.org:

... ale są zerowe docs.

Powodzenia!

Odpowiedział 26/10/2008 o 00:49
źródło użytkownik

głosy
0

Można też rzucić okiem na monkeypatch granulowane-uprawnienia: http://code.google.com/p/django-granular-permissions/

Dodaje uprawnienia na poziomie wiersza do systemu uprawnień Django.

Odpowiedział 27/11/2008 o 11:40
źródło użytkownik

głosy
0

Właśnie znaleziono http://bitbucket.org/jezdez/django-authority/ , wygląda obiecująco.

Odpowiedział 27/08/2009 o 02:08
źródło użytkownik

głosy
2

Od Django 1.2 jest wsparcie dla uprawnień na poziomie wiersza, które Django opiekun sprawia bardzo intuicyjny w obsłudze.

Odpowiedział 10/08/2011 o 09:44
źródło użytkownik

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