Ich habe ein paar StackOverflow-Threads gelesen, konnte aber keine zufriedenstellende oder funktionierende Lösung finden. Ich hätte gerne mehrere benutzerdefinierte Berechtigungen, die mehr oder weniger komplex sind (variierend von ReadOnly bis, Limit by-user ...).Django Rest Framework und Berechtigungen
Lasst uns beginnen mit dem, was ich jetzt haben:
- eine Basisklasse, nur lesbar
- meine Einstellungen
- ein Viewset für die Nutzer.
- und ein staff_user, der das alles zusammenbrechen lassen
Meine Basisklasse wie folgt aussieht:
class ReadOnly(permissions.BasePermission):
"""
Only, always, ever allow read-only access.
"""
def has_permission(self, request, view):
if request.method in permissions.SAFE_METHODS:
return True
return False
und wird entsprechend innerhited durch die Viewset des Beispiels Benutzers
class UserViewSet(viewsets.ModelViewSet):
"""
Retrieve the user associated with your session and allow all methods.
"""
serializer_class = UserSerializer
permission_classes = (ReadOnly,)
def get_queryset(self):
return User.objects.filter(id=self.request.user.id) # This should return an empty queryset when not logged in
und der entsprechenden Herbst -back default permission ist
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'api.permissions.ReadOnly'
]
}
Wenn ich jetzt auf die Benutzerseite zugreife und mich als Mitarbeiter einlogge, kann ich einfach Benutzer per POST erstellen und das gilt auch für alle meine anderen Ansichten. was geschieht hier?
Der Code, den Sie hier eingefügt haben * funktioniert * richtig. – Linovia