मैं जानता हूँ कि इस सवाल का लगभग एक साल पुराना है, लेकिन मैं अभी पता लगा कि कैसे 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
के लिए जो कुछ भी सेट करता है, वह खुशी से सम्मान करेगा।
जोसर ने हाल ही में जेडब्ल्यूटी के लिए डीजेंगोरस्टफ्रेमवर्क-जेडटी - http://djoser.readthedocs.io/en/latest/getting_started.html#installation और http://djoser.readthedocs.io/en/latest/ पर आधारित समर्थन प्राप्त किया है। authentication_backends.html # json-वेब-टोकन प्रमाणीकरण –