Frage

Ich habe die Erkundung der details des Django für etwa eine Woche jetzt, und wie das, was ich sehe.Allerdings habe ich auf einige..Negativität in Bezug auf feingranulare Kontrolle über die Berechtigungen, um die CRUD-Schnittstelle.

Was ich Schreibe ist ein Intranet-client-management-web-app.Die organisation ist über 6 Stufen, und ich brauche, um den Zugriff auf client-Gruppen auf der Basis von Ebenen.Kontinuierlich erweitern.Ich habe eine ziemlich gute Idee, wie ich das tun werde, aber ich bin nicht sicher, ob ich in der Lage zu integrieren es auch in der pre-integrierte admin-Oberfläche.

Ich habe getan, absolut null Django development sonst würde ich wohl eine bessere Idee auf, ob dies funktionieren würde oder nicht.Wahrscheinlich werde ich nicht verwenden, Django, wenn die erzeugte admin-interface wird nutzlos sein, dieses Projekt - aber wie ich schon sagte, es gibt eine starke Abhängigkeit von feinkörnigen benutzerdefinierte Berechtigungen.

Wird Django let me erstellen Sie benutzerdefinierte Berechtigungen/Regeln und integrieren Sie diese nahtlos in den admin-CRUD-Schnittstelle?

Update:Ich möchte mit der admin-app zu minimieren, die für die Wiederholung der Generierung von CRUD-interfaces, also ja, ich betrachte es als ein muss.

Update Zwei:

Ich beschreibe hier die Berechtigungen für dieses Projekt erforderlich.

Ein client kann Mitglied einer oder viele "Geschäfte".Vollzeit-Mitarbeiter sollten nur Bearbeiten können, um Kunden zu Ihrem Geschäft (auch wenn Sie einem anderen gehören-Shop).Allerdings sollten Sie nicht in der Lage sein zu sehen/Bearbeiten Kunden an einem anderen store.Casuals sollte nur in der Lage sein, um view-clients basierend auf dem, was speichern Sie rostered zu (oder, wenn der casual angemeldet ist wie das speichern der Benutzer - wahrscheinlicher).

Management vor, Sie müssen in der Lage sein, um zu sehen, alle Mitarbeiter für den Geschäften, die Sie verwalten, nichts mehr.

Senior management sollte in der Lage sein, zu Bearbeiten, ALLE Mitarbeiter und Berechtigungen erteilen " unter sich.

Nach dem Lesen der django-Dokumentation, Sie sagt, Sie kann nicht (autmoatically) legen Sie die Berechtigungen für eine Untergruppe einer Gruppe.Nur die gesamte Gruppe.Ist es einfach genug zu verspotten, Ihre eigenen Berechtigungen für diesen Zweck?

War es hilfreich?

Lösung

Wenn ich Lesen Sie Ihre aktualisierten Anforderungen richtig, ich glaube nicht, dass Django bestehenden auth-system ausreichend sein wird.Es klingt wie Sie brauchen eine voll-auf dem ACL-system.

Diesem Thema hat sich eine Anzahl von Zeiten.Versuchen Sie googeln auf django+acl.

Random samplings ...

Es war der Summer of Code-Projekt vor ein paar Jahren, aber ich bin mir nicht sicher, wo Sie bekam.Finden http://code.djangoproject.com/wiki/GenericAuthorization

Es gibt einen frisch-ticket djngoproject.org das könnte interessant sein:

Es gibt einige interessante code-snips auf dumpz.org:

...aber es sind keine Google docs.

Viel Glück!

Andere Tipps

Die Django Erlaubnis totally Regeln.Jedes Modell verfügt über einen Standardsatz von Berechtigungen.Können Sie neue Berechtigungen für Ihre Modelle auch.

Jeder Nutzer hat eine Reihe von Berechtigungen sowie Gruppenmitgliedschaften.Einzelne Benutzer können individuelle Rechte.Und Sie Erben die Berechtigungen aus Ihrer Mitgliedschaft in der Gruppe.

Ihr view-Funktionen (und Vorlagen) können leicht überprüfen die Anwesenheit der Abwesenheit von diesen Berechtigungen auf jeder Ebene der Granularität, die Sie benötigen, um zu verwenden.

Und wenn dies nicht genug für Sie, das Profil-add-on bietet Ihnen noch mehr Optionen für die Definition einer "User" - und Ihre Fähigkeiten, Berechtigungen, Rollen, Verantwortlichkeiten, etc.

Und wenn dies nicht genug für Sie, Sie können definieren Ihre eigenen Authentifizierungs-Systeme.


Was wichtig ist, nicht zu versuchen, Gruppen zu definieren, die tatsächlichen Teilmengen von Benutzern, die nicht beiläufig angegebenen Titel oder Rollen.Sie müssen sich nie "festlegen von Berechtigungen für eine Untergruppe einer Gruppe".Sie benötigen kleinere Gruppen.Gruppen definiert, um Teilmengen von Menschen.

Django ' s Standard-Berechtigungen werden um den Zugriff auf Modelle, nicht die Zeile den Zugriff innerhalb eines Modells.Auf die andere hand, Ihr problem ist über Teilmengen von Zeilen in mehrere Modelle:Client, Geschäft, Mitarbeiter, Manager.

Sie müssen ein Basis-set von FK ist unter dieser Gegenstände und einige Filter, um Teilmenge der Zeilen.Sie können Schwierigkeiten haben, dies mit Standard-admin-Seiten.Sie müssen möglicherweise Ihre eigene version von admin zu machen, verwenden Sie spezielle Filter.


Wenn Sie können es nicht mit dem Django-permission-system, sollten Sie überdenken Ihre use cases.Ernst.

[Das Django-REST-Schnittstelle, ist jedoch ein anderes Tier völlig, und erfordert eine gewisse Pflege und Fütterung.]

ModelAdmin Objekte has_add_permission, has_change_permission, has_delete_permission und queryset Methoden, die verwendet werden können, um Berechtigungen zu erzwingen, um was es sich bei dem angemeldeten Benutzer können anzeigen und ändern - Sie können eine Unterklasse, die verwendet diese, um durchzusetzen, was Berechtigungen, die Sie implementieren möchten, und registrieren Sie alle Ihre Modelle mit der admin Anwendung mit der Unterklasse.

Jedoch, es hängt alles davon ab, wie genau Ihre Berechtigungen system funktionieren wird - was sind die genauen Anforderungen, die fallen aus Ihrem fein abgestufte Berechtigungen?Je mehr du dich bewegst Weg von dem, was die admin Anwendung wurde entwickelt, um zu tun, desto mehr Arbeit es dauert, aber es gibt eine Menge von Haken in es, die Sie verwenden können, um Ihre benutzerdefinierten Anforderungen.Hier ist eine blog-Beitrag von Lukas-Werk was gibt Beispiele für einige der fine-tuning können Sie tun, ohne zu tief Graben.

Tut es absolut werden müssen, um die admin Anwendung? Generische Ansichten und ModelForms aufpassen kann, viel von der mühsam bits beteiligt sich an der Durchführung von CRUD , so seien Sie vorsichtig sich zu hingen bis auf die Anpassung admin - es ist fast eine Django-tradition zu beginnen, indem Sie immer hing bis auf die admin app-und was Sie tun und nicht tun können, zuerst zu denken, Sie werden nie haben zu schreiben jeden code wieder ;)

Von django 1.2 gibt es Unterstützung für die row-level Berechtigungen, die django-guardian macht die Bedienung sehr intuitiv zu handhaben.

Möglicherweise möchten Sie auch einen Blick auf die granulare Berechtigungen monkeypatch:http://code.google.com/p/django-granular-permissions/

Sie fügt hinzu, row-level Berechtigungen django ' s permission system.

Ich habe gerade gefunden http://bitbucket.org/jezdez/django-authority/ es sieht vielversprechend aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top