2016-09-11 3 views
0

Ich habe ein viewset im Ruhe-Framework, das sich nicht so verhält, wie ich es erwarten würde. Wenn ich mich mit einem Nicht-Mitarbeiter-Benutzer anmelde und zur api-URL/Benutzern navigiere, kann ich alle dort aufgeführten Benutzer sehen.Django rest_framework IsAdminUser verhält sich nicht

Die IsAuthenticated Berechtigung funktioniert, denn wenn ich abmelde ich bekomme eine Fehlermeldung, dass ich nicht authentifiziert bin.

Verwende ich diese Berechtigungen falsch? Ich habe das Tutorial gemacht und sah die Dokumentation durch, aber ich kann nichts finden, mir zu sagen, warum dies nicht

Ansichten funktionieren sollte:

class UserViewSet(viewsets.ModelViewSet): 
    """Viewset for viewing users. Only to be used by admins""" 
    queryset = LangaLangUserProfile.objects.all() 
    serializer_class = UserSerializer 
    filter_backends = (filters.DjangoFilterBackend,) 
    filter_fields = '__all__' 
    permissions_classes = (permissions.IsAdminUser,) 

class LanguageViewSet(viewsets.ReadOnlyModelViewSet): 
    """Viewset for Language objects, use the proper HTTP methods to modify them""" 
    queryset = Language.objects.all() 
    serializer_class = LanguageSerializer 
    filter_backends = (filters.DjangoFilterBackend,) 
    filter_fields = '__all__' 
    permissions_classes = (permissions.IsAuthenticated,) 

Urls:

router = routers.DefaultRouter() 
router.register(r'users', views.UserViewSet) 
router.register(r'language', views.LanguageViewSet) 

Serializer :

class UserSerializer(serializers.ModelSerializer): 
    """Serializer for User objects""" 
    class Meta: 
     model = LangaLangUserProfile 
     fields = '__all__' 

class LanguageSerializer(serializers.ModelSerializer): 
    """Serializer for the Language model""" 
    class Meta: 
     model = Language 
     fields = '__all__' 
     depth = 2 

Antwort

1

Typo!

Es ist permission_classes, nicht permissions_classes.


Über diesen Teil:

Die IsAuthenticated Erlaubnis arbeitet, denn wenn ich logout ich einen Fehler cget saysing, dass ich nicht authentifiziert bin.

Ich bin nicht sicher, warum dies geschieht, aber ich DEFAULT_PERMISSION_CLASSES in Ihren Django-Einstellungen schuld würde - vielleicht haben Sie IsAuthenticated dort angegeben?

Verwandte Themen