6

मैं Django बाकी फ्रेमवर्क साथ एक आवेदन पत्र का निर्माण करने की योजना बना रहा हूँ करने के लिए Django-आराम-ढांचा-जेडब्ल्यूटी एकीकृत करने के लिए। Django-Rest-Framework-JWTसत्र या टोकन प्रमाणीकरण तंत्र से प्रमाणीकरण तंत्र का उपयोग करने में मुझे अधिक दिलचस्पी है।डीआरएफ: कैसे Djoser

लेकिन Django-रेस्ट-प्रमाणीकरण और Djoser (जो पंजीकरण की प्रक्रिया में मदद करता है) की तरह अन्य सभी संकुल सत्र और टोकन प्रमाणीकरण प्रणाली का उपयोग करता।

मैं Djoser या Django-रेस्ट-फ्रेमवर्क-जेडब्ल्यूटी साथ Django-रेस्ट-प्रमाणीकरण में टोकन प्रमाणीकरण तंत्र कैसे ओवरराइड करते हैं?

उत्तर

11

मैं जानता हूँ कि इस सवाल का लगभग एक साल पुराना है, लेकिन मैं अभी पता लगा कि कैसे Djoser और Django-आराम-नॉक्स साथ और यह सुनिश्चित करें खेलने के लिए प्राप्त करने के लिए पर्याप्त उसी तकनीक का djangorestframework-जेडब्ल्यूटी के रूप में साथ काम किया कुंआ। चाल यह जान रही है कि आप अपने लेख-संबंधित एंडपॉइंट्स का उपयोग किए बिना जोसर के खाता एंडपॉइंट्स का उपयोग कर सकते हैं। आपको बस प्रत्येक लाइब्रेरी को अपने एंडपॉइंट पर रखना होगा।

यहाँ कैसे मैं में प्रवेश करें और Djoser अंतिम बिंदुओं के खिलाफ प्रमाणित (मैं शुरू से ही इसे लेने से खत्म करने के लिए जा रहा हूँ) को JWTs उपयोग करने के लिए Django बाकी फ्रेमवर्क की स्थापना की है:

पहले, djangorestframework-जेडब्ल्यूटी स्थापित और Djoser:

pip install djangorestframework-jwt djoser 

निर्दिष्ट करें कि आप JWTs में DEFAULT_AUTHENTICATION_CLASSES को JSONWebTokenAuthentication जोड़कर प्रमाणित करने के लिए उपयोग करना चाहते हैं अपने Django परियोजना की settings.py:

REST_FRAMEWORK = { 
    'DEFAULT_PERMISSION_CLASSES': (
     'rest_framework.permissions.IsAuthenticated', 
    ), 
    'DEFAULT_AUTHENTICATION_CLASSES': (
     'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 
    ), 
} 

इसके बाद, अपने यूआरएल को djoser.urls और rest_framework_jwt के obtain_jwt_token दृश्य जोड़ें:

from django.conf.urls import url, include 
from rest_framework_jwt import views as jwt_views 

urlpatterns = [ 
    url(r'^account/', include('djoser.urls')), 
    url(r'^auth/login/', jwt_views.obtain_jwt_token, name='auth'), 
] 

कि सब कुछ आप आरंभ करने की जरूरत होनी चाहिए।,

python manage.py migrate 

चीजों का परीक्षण करने के लिए: सुरक्षित रहने के लिए, एक migrate (मैं Django बाकी फ्रेमवर्क का एक नया उदाहरण इस पोस्ट के लिए काता और अभी तक इस बात से पहले प्रारंभिक प्रतिबद्ध नहीं चला था) को चलाने

python manage.py createsuperuser 

एक बार जब आप एक उपयोगकर्ता खाते है, runserver और उसके बाद में प्रवेश करने की कोशिश अपने जेडब्ल्यूटी:

HTTP POSTअगर आप पहले से ही एक नहीं है, एक नया उपयोगकर्ता बनाने 10 उपयोगकर्ता नाम = व्यवस्थापक पासवर्ड = पासवर्ड

आप वापस एक टोकन प्राप्त करना चाहिए:

{ 
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NTg2ODI3MzYsInVzZXJuYW1lIjoiYWRtaW4iLCJlbWFpbCI6IiIsInVzZXJfaWQiOjJ9.JDoVCpfiE0uGhsv9OQfPgPc-wxjjQtcEjwAI6bTLWRM" 
} 

फिर आप Djoser के /मुझे/ endpoint के खिलाफ प्रमाणित करने के लिए आपकी प्रोफ़ाइल जानकारी प्राप्त करने के लिए इस टोकन का उपयोग कर सकते हैं। बस प्राधिकरण के रूप में आपके अनुरोध के हेडर के भीतर अपने टोकन शामिल: जेडब्ल्यूटी:

http http://localhost:8000/account/me/ "प्राधिकरण: जेडब्ल्यूटी eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0NTg2ODI3MzYsInVzZXJuYW1lIjoiYWRtaW4iLCJlbWFpbCI6IiIsInVzZXJfaWQiOjJ9.JDoVCpfiE0uGhsv9OQfPgPc-wxjjQtcEjwAI6bTLWRM"

यहाँ मैं वापस मिल गया है:

{ 
    "email": "", 
    "id": 2, 
    "username": "admin" 
} 

जैसा कि आप देख सकते हैं, हमें शुरू करना बहुत आसान है प्रमाणीकरण के लिए जेडब्ल्यूटीएस आईएनजी। मेरा अनुमान है कि djoser और django-rest-auth मूलभूत, सत्र, या टोकन प्रमाणीकरण पर ध्यान केंद्रित करते हैं क्योंकि उन्हें डीआरएफ बॉक्स से बाहर रखा गया है और इस प्रकार संभवतः सबसे आम तरीका है जिसके द्वारा लोग कॉल प्रमाणित करते हैं उनके सर्वर।

इन सभी की सुंदरता यह है कि एक और अधिक सुरक्षित प्रमाणीकरण योजना को कार्यान्वित करना आसान है क्योंकि जोसर अपने प्रमाणीकरण वर्गों के साथ कसकर नहीं जोड़ता है - यह DEFAULT_AUTHENTICATION_CLASSES के लिए जो कुछ भी सेट करता है, वह खुशी से सम्मान करेगा।

+1

जोसर ने हाल ही में जेडब्ल्यूटी के लिए डीजेंगोरस्टफ्रेमवर्क-जेडटी - http://djoser.readthedocs.io/en/latest/getting_started.html#installation और http://djoser.readthedocs.io/en/latest/ पर आधारित समर्थन प्राप्त किया है। authentication_backends.html # json-वेब-टोकन प्रमाणीकरण –

संबंधित मुद्दे

 संबंधित मुद्दे