ich verwenden, um die folgende benutzerdefinierte BerechtigungsklasseIndividuelle Berechtigungsklasse in Django Tastypie
class CustomDjangoAuthorization(DjangoAuthorization):
def read_detail(self, object_list, bundle):
result = super(CustomDjangoAuthorization, self).read_detail(object_list, bundle)
# now we check here for specific permission
if bundle.request.user.profile.user_status:
raise Unauthorized("You are not allowed to access that resource.")
return result
Es gibt
401 Unauthorized
wenn die user_status = 1
. Aber wenn ich die user_status
-0 ändern, zeigt es noch
401 Unauthorized
Fehler.
Mein unsends Autorisierungsverstand war, dass tastypie für jede Anfrage Autorisierung prüft und eine 200 Antwort für Ok und 401 für Unauthorized gibt. Fehle ich hier etwas?
Hey Sean, ich habe versucht, benutzerdefinierten Code vor Super zu bewegen. Ich bekomme eine
AttributeError: ‘AnonymousUser’ object has no attribute ‘profile’
Alles funktioniert in localhost, Produktion gibt ein Problem. Dies geschieht in beiden Fällen, wenn user_status = 1
& wenn user_status = 0
Mit Django 1.8 und Tastypie 0.13.3.
Es ist durchaus möglich, dass Ihr Aufruf von super() 401 aus einem nicht verknüpften Grund zurückgibt und Sie es an den Benutzer zurückgeben. Könnte überprüfen, welches Ergebnis im Ergebnis ist :) –
Ah, die DjangoAuthorization erfordert, dass Sie angemeldet sind, daher hat das "AnonymousUser" -Objekt kein Attribut "profile", denke ich. –