Django: Benutzer.has_perm immer wahr und Benutzer ist nicht der superuser. Warum?
Wies ich eine Berechtigung von einem Benutzer in meinem Django-app 1.5.
Wenn ich eine Liste aller Benutzer, Berechtigungen mit
In [1]: user.get_all_permissions()
Out[1]: set([u'profile.change_profile'])
Können, sehe ich eine Berechtigung (ist das so richtig und wollte). Der Benutzer ist auch kein superuser ist, kein admin.
In [2]: user.is_superuser
Out[2]: False
Allerdings, wenn ich versuche zu verwenden user.has_perm
, ich bekomme immer True
als Gegenleistung für jedes eingereichte Erlaubnis beantragen.
In [3]: user.has_perm('random_permission')
Out[3]: True
Einem Verhalten würde ich erwarten, dass, wenn der Benutzer ein superuser/admin. Warum ist ein nicht-superuser immer True
für jede Anforderung? Habe ich irgendwelche Einstellung?
Verwenden Sie eine benutzerdefinierte
User
Modell oder Authentifizierung Backend? Vielleicht Lesen die docs hier: docs.djangoproject.com/en/dev/topics/auth/customizing/...InformationsquelleAutor neurix | 2013-05-07
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie bereits im Kommentar von Thane Brimhall, sollten Sie überprüfen Sie Ihre Authentifizierungs-backends.
Finden Sie diesen Kommentar auf has_perm Methode des User-Modell in django Quellen:
Vergessen Sie auch nicht zu überprüfen, Benutzer-Gruppen. Standard-backend-Prüfungen für Benutzer, Gruppen, Berechtigungen, damit es angeschlossen werden kann.
InformationsquelleAutor sepulchered