2017-07-05 6 views
1

Ich brauche bestimmte Benutzer django.contrib.auth.models.User Objekte zu bearbeiten.Ist es sicher, "auth | Benutzer | Kann Benutzer ändern" Berechtigungen ohne die "ist Personal" -Flag zu gewähren?

Mein erster Gedanke war, ihnen die auth | User | Can change user Erlaubnis zu erteilen und sie als is staff zu kennzeichnen, damit sie sich auf der Django Admin-Seite einloggen können. Das Problem ist jedoch, dass sie damit Super Admins machen können.

Da ich möchte, dass sie nur in der Lage sein, bestimmte Felder zu bearbeiten, habe ich eine sehr eingeschränkte Sicht dafür. Was ich tun muss, ist, dieser Gruppe von Benutzern die Berechtigung für diese Ansicht zu erteilen. Die einzige Lösung, ich fand, war zu noch ihnen die auth | User | Can change user Erlaubnis erteilen (ohne sie zu machen staff).

Meine Frage lautet:

Wenn ich den @permission_required Dekorateur für diese Ansicht in Zusammenarbeit mit der Erlaubnis auth | User | Can change user verwenden, ist es eine andere Möglichkeit für die Nutzer ihren Weg hacken sich die Super-Admin-Rolle gewähren (auch Angenommen, der Benutzer ist ein fortgeschrittener Django-Programmierer)? Ich spreche über Dinge wie e. G. API-Aufrufe, die mir nicht bekannt sind, oder ähnliches.

möchte ich hier aus dem Rahmen mögliche Fehler in meinem Code nehmen.

Antwort

1

IMHO, Ja, es ist sehr sicher Ihre eigene Art zu verwenden/erstellen, die auf Benutzer jede Art von benutzerdefinierten Feldern.

In einem unserer Projekte hatten wir 2-3 Arten von Admin-Benutzern hinzugefügt und es war ziemlich sicher. Wir hatten Maintainer, Administrator, SuperUser und zwei Arten von Endbenutzern hinzugefügt (das war die Anforderung). Wir hatten viele Anpassungen in Django Admin vorgenommen, um alle Arten von Gruppen und Benutzern im Django Admin aufzulisten.

JFYI Wir hatten den Kunden keinen Zugriff auf Django Admin zur Verfügung gestellt, wir hatten SuperUser-Login bereitgestellt, um eine beliebige Art von Benutzer für den Zugriff auf unser Tool zu erstellen.

1

Es könnte besser sein, ein custom permission zum Beispiel zu erstellen 'can_change_user_restricted' und prüfen Sie diese Berechtigung in Ihrer benutzerdefinierten Ansicht.

Dann müssen Sie sich keine Sorgen machen, dass in Zukunft eine andere Ansicht/api hinzugefügt werden könnte, oder das is_staff Flag gesetzt wird, und plötzlich kann sich der Benutzer selbst zum Superuser machen.

Verwandte Themen