Desidero assicurarmi che request.user possa solo inviare una richiesta POST per creare un argomento del forum in cui sono gli auther. Con PUT e DELETE sono in grado di farlo utilizzando il has_object_permission
ma con il POST non riesco a farlo, suppongo che l'oggetto non sia ancora stato creato.Autorizzazione livello oggetto Python Rest Framework su POST
class TopicPermission(IsAuthenticatedOrReadOnly):
"""
Any user should be able to read topics but only authenticated
users should be able to create new topics. An owner or moderator
should be able to update a discussion or delete.
"""
def has_object_permission(self, request, view, obj):
if request.method in SAFE_METHODS:
return True
# Instance must have an attribute named `author` or moderator
return obj.author == request.user or request.user.forum_moderator
Come potrei fare per verificare request.user == obj.author
nelle richieste POST?
si dispone di una 'author' campo sul serializzatore che si sta tentando di assicurare sia impostato per l'utente corrente quando il cresting oggetto? Ci sono modi migliori per farlo rispetto al controllo dei permessi. –
sì, non si tratta di questo. Funziona bene per PUT e DELETE, ma con POST has_object_permission non funziona. – awwester
Con "non funziona" intendi "non viene chiamato", "attiva un errore" o "non passa mai"? Non è chiaro cosa tu stia cercando di fare nella tua domanda, e [odora di un problema XY] (http://meta.stackexchange.com/q/66377/159034). –