0

Ich verwende Django REST-Framework, um Daten in JSON verfügbar zu haben und mit ihnen die Seite über AJAX zu aktualisieren. Wie kann ich die URL sichern, auf der die Seite mit Daten aktualisiert wird und niemand auf die API-URL zugreifen kann? Die URL ist in AJAX in HTML sichtbar, so dass auf sie zugegriffen werden kann, aber ich möchte sie durch Token oder eine andere geeignete Authentifizierung verhindern, die nur darauf Zugriff hat.Wie man Token-Authentifizierung über AJAX in Django setzt, um die API-URL zu sichern

Die Adresse ist '/ api/Stück /' (siehe im AJAX Code)

serializers.py

from rest_framework import serializers 

from .models import Item 

class ItemModelSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Item 
     fields = [ 
      'title', 
      'value', 
     ] 

views.py (in API)

from rest_framework import generics 
from .serializers import ItemModelSerializer 
from .models import Item 

class ItemListAPIView(generics.ListAPIView): 
    serializer_class = ItemModelSerializer 

    def get_queryset(self): 
     return Item.objects.all().order_by('sort') 

URLs .py

urlpatterns = [ 
    #...urls... 
    url(r'^api/item/', include('apps.item.api.urls', namespace='api-item')), 
    url(r'^admin/', admin.site.urls), 
] 

template - ajax

setInterval(function() { 
    $.ajax({ 
     method: "GET", 
     url: "/api/item/", 
     success: function(data) { 
      $("#items tbody").empty(); 
      $.each(data, function (key, value) {          
       var itemKey = key; 
       var itemTitle = value.title; 
       var itemValue = value.value; 
       $("#items tbody").append(
        "<tr><td class='left'>" + itemTitle + "</td><td>" + itemValue</td></tr>" 
       ) 
      }) 
     }, 
     error: function(data) { 
      console.log("error") 
      console.log(data) 
     } 
    }) 
}, 3000) 

Antwort

0

Ich bin mir nicht sicher, ob ich Ihre Frage richtig verstanden hat, ich glaube, Sie fragen, wie Sie einen Token in AJAX für Ihre API in Django gesetzt. Normalerweise verwenden wir ein Konzept des geteilten Tokens. Es wird eine Login-API geben, die einen Benutzer mit einem Benutzernamen/Passwort authentifiziert. Wenn die Anmeldeinformationen korrekt sind, gibt die Auth-API das Token zurück, das Sie verwenden und in AJAX-Anforderungen festlegen können. Verwenden Sie dieses Token, um weitere Aufrufe Ihrer API zur Authentifizierung zu tätigen.

Wenn Sie Ihre API direkt ohne Auth-API aufrufen möchten, müssen Sie ein fest codiertes Token verwenden, das zwischen Django und AJAX geteilt wird. Es ist jedoch unsicher, solchen Praktiken zu folgen.

Schauen Sie hier für die DRF-Authentifizierung http://www.django-rest-framework.org/api-guide/authentication/#sessionauthentication

+0

„Wenn Sie direkt Ihre API aufrufen, ohne Auth API möchten, müssen Sie jedoch solche Praktiken zu folgen, es ist unsicher zwischen Django und AJAX teilte eine hart codierte Token verwenden.“ - das ist genau mein Punkt - wie sichere GET-Anfragen in Django, AJAX, JS nur diese Website kann niemand sonst verwenden? – Radek

Verwandte Themen