2016-05-07 12 views
1

Ich möchte den Zugriff auf myweb/api in Django Rest Framework beschränken.Django Rest Framework API Genehmigung

Ich habe versucht:

REST_FRAMEWORK = { 
    'DEFAULT_PERMISSION_CLASSES': (
     'rest_framework.permissions.IsAuthenticated', 
    ) 
} 

Aber es schränkt alle Anfragen aber ich möchte den Zugang beschränken sich nur auf myweb/api Seite

+0

Blick auf dieses Tutorial https://godjango.com/43-permissions-authentication-django-rest-framework-part-2/ –

+1

Sie Berechtigungsklassen für jede Ansicht unter myweb/api angeben. Es gibt 2 Beispiele hier: http://www.django-rest-framework.org/api-guide/permissions/#setting-the-permission-policy –

Antwort

1

Sie liberal Berechtigungen in settings.py Datei hinzufügen könnte und fügen restriktivere in der spezifischen api Sicht.

In settings.py, fügen Sie so etwas wie:

'DEFAULT_PERMISSION_CLASSES': (
    'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' 
), 

von Ihnen auch AllowAny Erlaubnis nutzen könnten.

Sie können die Authentifizierungsrichtlinie per View- oder Viewset-Basis mithilfe der klassenbasierten APIView-Sichten festlegen.

from rest_framework.permissions import IsAuthenticated 
from rest_framework.response import Response 
from rest_framework.views import APIView 

class ExampleView(APIView): 
    permission_classes = (IsAuthenticated,) 

    def get(self, request, format=None): 
     content = { 
      'status': 'request was permitted' 
     } 
     return Response(content) 

Oder, wenn Sie den @api_view Dekorateur mit Funktion basierter Ansichten verwenden.

from rest_framework.decorators import api_view, permission_classes 
from rest_framework.permissions import IsAuthenticated 
from rest_framework.response import Response 

@api_view('GET') 
@permission_classes((IsAuthenticated,)) 
def example_view(request, format=None): 
    content = { 
     'status': 'request was permitted' 
    } 
    return Response(content) 

Wenn Sie neue Berechtigungsklassen durch Klasse-Attribut oder Dekorateure Sie sagen die Ansicht, die Standardliste setzen über die settings.py Datei zu ignorieren.