Django Inlines Benutzerberechtigungen + Nur anzeigen - Berechtigungsprobleme

9

Ich bin mir nicht sicher, ob das ein Fehler ist oder ich gerade etwas vermisse (obwohl ich die Dokumentation bereits über Inlines analysiert habe), aber:

Nehmen wir an, ich habe ein Modell A. Modell A ist ein Inline-Modell von Modell B. Benutzer U hat vollen Zugriff auf Modell B, ändert aber nur die Berechtigungen für Modell A (also weder hinzufügen noch löschen).

Beim Bearbeiten von Modell B kann Benutzer U jedoch immer noch den Link "Add a any A" unten sehen, obwohl U keine Berechtigungen für das jeweilige Modell hinzugefügt hat.

Was ist los? Warum wird dieser Link weiterhin angezeigt? Meine Logik besagt, dass, wenn U keine Berechtigung zum Hinzufügen von A hat, der Link nicht mehr angezeigt werden sollte.

Idealerweise würde ich auch gerne nur U-Rechte zu Modell A geben (also keine hinzufügen, löschen oder ändern - nur Ansicht), aber ich habe darüber gelesen (seltsam, wenn du mich fragst) Philosophie nach "Wenn Sie U nicht vertrauen, verweigern Sie ihm einfach den Zugriff auf den Adminbereich." Eine Art dummer Doktrin.

Im Moment versuche ich, diese "Nur-Ansicht-Berechtigungen" zu simulieren, indem ich nur Rechte ändere und alle Felder schreibgeschützt lasse. Aber ich denke, das ist eine Art dummer Ansatz und kann auch Probleme wie die Erlaubnis Sache oben verursachen ...

Wie kann ein durchschnittlicher Django-Programmierer wie ich Berechtigungen nur für Views erhalten, und vor allem, wie soll ich den Link "Ein weiteres A hinzufügen" unten im Admin-Bearbeitungsformular loswerden?

Vielen Dank im Voraus!

    
Vali 18.05.2010, 14:14
quelle

1 Antwort

2

Wenn ich eine schreibgeschützte Version dessen, was im Admin ist, haben möchte, schreibe ich einfach einige normale Django-Ansichten und halte sie vom Admin fern.

Ich glaube nicht, dass die Art von Dingen, über die Sie sprechen (Änderungen an einem Objekt, aber nicht an seinen Inlines), wirklich vom Administrator unterstützt wird. Versteh mich nicht falsch: Der Administrator ist sehr flexibel und nützlich, aber es ist nicht beabsichtigt, alles für dich zu tun.

Der einzige Weg, wie ich sehe, dass Sie so viel Kontrolle im Admin haben können, ist nicht Inline A.

  

"Wenn Sie U nicht vertrauen, verweigern Sie ihm einfach den Zugriff auf den Admin-Bereich". Eine Art dummer Doktrin.

Nicht wirklich, wenn Sie bedenken, dass der Administrator nicht das erforderliche Maß an Sicherheitsharding haben soll, um diese feinstufige Zugriffssteuerung zu garantieren. Es gibt viele, viele Orte im Admin, aufgrund seiner offenen und erweiterbaren Natur, wo Fehler lauern können (normalerweise im vom Benutzer geschriebenen Code), die von schlechten Schauspielern ausgenutzt werden können. Aus diesem Grund sollten nicht vertrauenswürdige Benutzer immer sehen, dass alle Administrator-URLs 404 zurückgeben.

Wenn die Anforderungen an die Zugriffssteuerung feinkörnig sind, wird es unwahrscheinlich, dass eine allgemeine (d. h. django.contrib ) Lösung dazu passt.

    
Mike DeSimone 22.06.2010, 03:31
quelle

Tags und Links