2015-06-03 3 views
0

Я пытаюсь установить пользовательские разрешения для класса, который расширяет viewets.ModelViewSet, и кажется, что мои разрешения не оцениваются. Вот мое мнение:Django REST Framework - пользовательские разрешения, не оценивающие

from rest_framework import viewsets 
from rest_framework.authentication import SessionAuthentication, BasicAuthentication 
from rest_framework.permissions import IsAuthenticated 

import models 
import serializers 
from permissions import IsAdminOrAuthenticatedReadOnly 

class KPIViewSet(viewsets.ModelViewSet): 
    ''' 
    API endpoint that allows KPI metadata to be viewed or edited 
    ''' 

    authentication_classes = (BasicAuthentication,) 
    permission_classes = (IsAdminOrAuthenticatedReadOnly,) 

    queryset = models.KPI.objects.all() 
    serializer_class = serializers.KPISerializer 

И вот мое разрешение класс:

from rest_framework.permissions import BasePermission, SAFE_METHODS 

class IsAdminOrAuthenticatedReadOnly(BasePermission): 
    def has_permissions(self, request, view): 

     if request.method in SAFE_METHODS: 
      return request.user and request.user.is_authenticated() 

     return request.user and request.user.is_staff() 

Проблема я бегу в том, что IsAdminOrAuthenticatedReadOnly кажется, никогда не получить оценку. Я тестировал это, заставляя его всегда возвращать «False» и переключая значение allow_classes на «IsAuthenticated» в представлении. В первом сценарии запрос к конечной точке возвращается, как если бы не было требования проверки подлинности. В дальнейшем аутентификация выполняется, как и ожидалось.

Любые идеи, что мне не хватает?

ответ

1

Способ имеет has_permission не имеет_переводов (нет);)

+0

ugh. вы правы, спасибо –

Смежные вопросы