مهدی مومنی
مهدی مومنی
خواندن ۲ دقیقه·۲ سال پیش

استفاده از jwt در django Rest Framework

به نام خدا


django jwt authentication
django jwt authentication


سریع بریم سر اصل مطلب.


ما از JWT یا json web token برای Authentication استفاده میکنیم تا هرکسی نتونه به api ما دسترسی پیدا کنه .


خب من یه پروژه جنگو دارم که داخلش از rest framework استفاده کردم .


برای اینکه به view هامون پرمیشن بدیم و اجازه ندیم هیچکس بدون Authenticate ازش استفاده کنه کافیه که ماژول IsAuthenticated رو به صورت زیر در فایل view ایمپورت کنیم

from rest_framework.permissions import IsAuthenticated


و حالا درست یک خط بعد از class هامون permission_classes = [IsAuthenticated] رو اضافه میکنیم

تا اگه کاربر لاگین نکرده بود بقیه کد ها اجرا نشوند .


حالا میریم سراغ نصب jwt در جنگو :

کافیه متن زیر رو داخل ترمینال اجرا کنید

pip install djangorestframework_simplejwt

حالا این اپ رو به قسمت installed app داخل ستینگ پروژه اضافه میکنیم

'rest_framework_simplejwt'

و کد زیر رو توی ستینگ پروژه اضافه میکنیم تا شیوه اتنتیکیت ما jwt باشه :

REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_simplejwt.authentication.JWTAuthentication', ) }


حالا وارد قسمت urls میشویم و ماژول های زیر رو ایمپورت میکنیم :

from rest_framework_simplejwt.views import ( TokenObtainPairView, TokenRefreshView, )

و کد های زیر رو توی قسمت urlpatterns مینویسیم :

path('token/', TokenObtainPairView.as_view(), name='token_obtain_pair'), path('token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),


حالا وقتی وارد مصیر token بشیم از ما یک username و password میخواد که با وارد کردن یوزرنیم و پسورد یک کاربر میتوانیم دوتا token یکی برای access و یکی برای refresh بگیریم


استفاده از access token :

چون من من سوپریوزر پروژم admin و پسوردشم admin هست و یوزر دیگه ای ندارم از همین به عنوان یوزرنیم و پسورد استفاده میکنم .


وقتی یوزرنیم و پسورد رو وارد کنیم به ما دوتا توکن میده که یکیش access و یکیش refresh هست

توکن access بعد از یه مدت کوتاه فکر کنم 5 دقیقه expire میشه و با توکن refresh میتونیم اون رو تمدید کنیم


jwt django token
jwt django token

در تصویر بالا من از توکن استفاده نکردم و همونطور که میبینید اجازه مشاهده دیتاهارو به من نداده


حالا برای استفاده از توکن access من از postman استفاده میکنم

دامنه رو داخل postman وارد میکنیم و در قسمت header یک کلید Authorization میدهیم و مقدار آن را با Bearer Token پر میکنیم

برای مثال

Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjc2Mzg1MjIzLCJpYXQiOjE2NzYzODQ5MjMsImp0aSI6IjZjMDkzNGYzZWM0ZDQ4MTJhMGUxMjg5NzI4NzQzZDFmIiwidXNlcl9pZCI6MX0.nYqX0ZcSY4sCy9YPIxOXTFeV0vCkYJjggvbOi1B6ZWo

jwt django token
jwt django token

حالا در تصویر دوم میبینید که من داخل headers در پستمن توکن رو ارسال کردم و دیتاهارو بهم نشون داده .


ساخت token جدید با پست من(postman) :

لینک رو با متد پست ارسال میکنیم

و داخل قسمت body یوزرنیم و پسورد رو وارد میکنیم

منبع :

https://django-rest-framework-simplejwt.readthedocs.io/en/latest/getting_started.html

django
مهدی مومنی هستم علاقه مند به برنامه نویسی وب ، بیشتر از دو سال که python و django کار می کنم و دوست دارم چیز هایی که یاد میگیرم را با بقیه به اشتراک بزارم .... وبسایت شخصی من https://mahdimomeni.ir
شاید از این پست‌ها خوشتان بیاید