0

私はDjango RESTフレームワークを使用してJSONでデータを利用できるようにし、AJAX経由でページを更新するために使用します。ページが更新されているURLをデータで保護し、誰もAPI URLにアクセスできないようにするにはどうすればよいですか。 URLはAJAXのhtmlで見ることができるのでアクセスすることができますが、トークンやその他の適切な認証でアクセスできないようにしたいと考えています。API URLを確保するためにDjangoでAJAXを使用してトークン認証を設定する方法

URLが '/ API /項目/' である(AJAXコードで参照されたい)(API)で

serializers.py

from rest_framework import serializers 

from .models import Item 

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

views.py

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') 

のURL .py

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

テンプレート - 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) 

答えて

0

私は私が正しくあなたの質問を理解していれば、私はあなたがDjangoの中にあなたのAPIのためのAJAXでのトークンを設定しない方法を求めていると思いますかわかりません。通常、共有トークンの概念を使用します。ユーザー名/パスワードでユーザーを認証するログインAPIがあります。資格情報が正しい場合、auth APIはAJAX要求で使用および設定できるトークンを返します。このトークンを使用して、認証のためにAPIをさらに呼び出します。

auth APIなしでAPIを直接呼び出す場合は、DjangoとAJAXの間で共有されるハードコーディングされたトークンを使用する必要がありますが、そのような方法に従うことは危険です。

は「あなたが直接認証APIなしであなたのAPIを呼び出したい場合は、ジャンゴとAJAXの間で共有ハードコーディングされたトークンを使用する必要がありますが、このような慣行に従うことは危険です。」DRF認証http://www.django-rest-framework.org/api-guide/authentication/#sessionauthentication

+0

についてはこちらをご覧ください - それは私の正確なポイントです - どのようにDjango、AJAX、JSでGET要求を確保するためには、そのWebサイトだけが他の誰も使用できませんか? – Radek

関連する問題