Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python

Ang JWT Authentication sa Django

by
Difficulty:IntermediateLength:MediumLanguages:

Tagalog (Wikang Tagalog) translation by Robert Alexander (you can also view the original English article)

Ang tutoryal na ito ay magbibigay ng introduksyon sa [] at kung paano gamitin ang JWT authentication sa Django.

Ano ang JWT?

Ang JWT ay isang encoded JSON string na ipinapasa sa headers upang patotohanan ang request. Ito ay madalas nakukuha sa pamamagitan ng pag-hash ng JSON data gamit ang secret key. Ito ay nangangahulugan na ang server ay hindi na kailangan magsuri sa database para malaman ang user na nakaugnay sa bawat token.

Paano ito JSON Web Tokens Nangyayari?

Kung magtagumpay na maglog-in ang isang user sa paggamit ng kaniyang mga credential, makukuha ang isang JSON WebToken at ito ay mailalagay sa lokal na storage. Kung nais naman ng user na magkaroon ng akses sa isang protektadong URL, ang token ay ipapadala sa header ng request. Pagkatapos titingnan ng server ang balidong JWT sa Authorization header, at kung may makita, ang user ay mabibigyan ng akses.

Ganito ang itsura ng tipikal na content header:

Awtorisasyon: Tagapagdala eyJhbGciOiJIUzI1NiIsI

Ang dayagram sa ibaba ay nagpapakita ng proseso na ito:

How JSON Web Tokens Work

Ang Konsepto ng Authentication at Authorization

Ang Authentication ay ang proseso ng pagtutukoy ng isang user na nag-log in, habang ang authorization ay ang proseso ng pagtukoy kung ang partikular na user ay may karapatan na magkaroon ng access sa isang web resource.

API Halimbawa

Sa tutoryal na ito, tayo ay gagawa ng isang simpleng user authentication system sa Django gamit ang JWT bilang mekanismo ng authentication.

Mga Pangangailangan

  • Django
  • Python

Magsimula na tayo.

Gumawa ng directory kung saan mo itatago ang iyong proyekto at isang virtual environment upang mailagay ang project dependencies.

Aktibahin ang virtual environment:

Gumawa ng proyekto sa Django.

I-install ang DRF at django-rest-framework-jwt gamit ang pip.

Halika at idagdag natin ang DRF sa listahan ng installed apps sa ang settings.py file.

Isaayos ang JWT Settings

Upang magamit ang JWT, kailangan natin isaayos ang mga django-rest-framework permissions upang matanggap ang JSON Web Tokens.

Sa settings.py file, ilagay ang mga sumusunod na configuration:

Gumawa ng bagong app na tinatawag na users na nangangasiwa sa user authentication at management.

Ilagay ang users application sa listahan ng installed apps sa settings.py file.

Ang Pagsasaayos ng Database

Gagamitin natin ang PostgreSQL database dahil ito ay mas matatag at matibay.

Gumawa ng auth database at magtalaga nguser.

Lumipat sa Postgres account sa iyong machine sa pamamagitan ng pagtatype:

I-akses ang Postgres prompt at gumawa ng database:

Gumawa ng role:

Bigyan ng database access ang user:

I-install ang psycopg2 package, na nagbibigay ng permiso sa atin na gamitin ang database na nilikha natin:

I-edit ang kasalukuyang configured SQLite database at gamitin ang Postgres database.

Ang Paggawa ng mga Modelo

Ang Django ay may kasamang built-in na sistema ng authentication na detalyado, ngunit minsan kailangan natin gumawa ng mga pagbabago, kaya kailangan nating gumawa ng isang sistema ng custom user authentication. Ang ating user model ay makakakuha mula sa AbstractBaseUser class na ibinigay ng django.contrib.auth.models.

Sa users/models.py, magsisimula tayo sa paggawa ng User model kung saan ilalagay ang mga detalye ng user.

Ang REQUIRED_FIELDS ay naglalaman ng lahat ng kinakailangang mga field sa user model, maliban sausername field at password, dahil ang mga field na ito ay awtomatiko.

Ang UserManager ay isang klase na tumutukoy sa create_user at createsuperuser na paraan. Ang klaseng ito ay dapat na mauuna sa AbstractBaseUser class na tinukoy natin sa itaas. Halika at tukuyin natin.

Ang mga Migration

Ang mga Migration ay nagbibigay ng daan upang baguhin ang iyong database schema sa tuwing babaguhin ang iyong mga model, nang hindi nawawala ang mga datos.

Gumawa ng paunang migration para sa ating users model, at i-sync ang database sa unang pagkakataon.

Paglikha ng Superuser

Gumawa ng superuser sa pamamagitan ng pag-run ng mga sumusunod na command:

Paglikha ng mga Bagong Users

Gumawa tayo ng endpoint upang paganahin ang pagpaparehistro ng mga bagong users. Magsisimula tayo sa paglalagay ng mgaserial sa mga User model field. Ang serializer ay nagbibigay ng paraan ng pagbabago ng datos mula sa isang form na madaling maunawaan, tulad ng JSON o XML. Ginagawa naman ng Deserialization ang kabaligtaran nito, ang pagpapalit ng mga datos sa isang form na maaaring i-save sa database.

Gumawa ng users/serializers.py at ilagay ang mga sumusunod na code.

CreateUserAPIView

Susunod, gusto natin na gumawa ng view upang ang kliyente ay may URL para sa paglikha ng mga bagong users.

Sa users.views.py, ilagay ang mga sumusunod:

Itatakda natin ang permission_classes sa to (AllowAny,) upang magbigay sa kahit na sinong user ng access sa URL na ito.

Ang Pagsasaayos ng mga URL

Gumawa ng file users/urls.py at maglagay ng URL para bumagay sa view na ating ginawa. At ilagay ang mga sumusunod na code.

Kailangan din natin na i-import ang mga URL mula sa users application sa main django_auth/urls.py file. Kaya gawin ito. Tayo ay gumagamit ng include function dito, kaya huwag kalimutan na i-import ito.

Ngayon na tapos na tayo sa paggawa ng endpoint, subukan natin ito at tingnan natin kung tama ang ating ginagawa. Gagamitin natin ang Postman para masubukan ito. Kung ikaw ay hindi pamilyar sa Postman, ito ay ang tool na nagpapakita ng madaling GUI para sa pagbuo ng mga request at reading responses.

Configuring URLs

Tulad ng nakikita sa itaas, gumagana ang endpoint tulad ng inaasahan.

Ang Pag-aauthenticate ng mga User

Gagamitin natin ang Django-REST Framework JWT Python module na nilagay natin sa simula ng tutoryal na ito. Ito ay nagdaragdag ng JWT authentication support para sa Django Rest Framework apps.

Pero unahin muna natin ang pagtukoy sa ilang mga configuration parameters para sa ating mga token at kung paano ito ginagawa sa settings.py file.

  • JWT_VERIFY: Ito ay magreresulta sa jwt.DecodeError kung ang secret ay mali.
  • JWT_VERIFY_EXPIRATION : Ito ay nagtatakda sa pagtatapos ng True, na nangangahulugan na ang mgaToken ay mawawalan ng bisa pagkatapos ng panahon. Ang default na oras ay limang minuto.
  • JWT_AUTH_HEADER_PREFIX: Ang authorization header ay nagbibigay halaga sa prefix na kinakailangan na ipadala kasama ng token. Itinakda namin ito bilang Bearer, at ang default ay JWT.

Sa users/views.py, ilagay ang mga sumusunod na code.

Sa code sa itaas, ang login view ay itinuturing na username at password ang input, at ito ay gumagawa ng token na may kasamang impormasyon ng user na nababagay sa ipinasang credential bilang payload at ibinabalik ito sa browser. Ang iba pang detalye ng user tulad ng pangalan ay ibinabalik sa browser kasama ng token. Ang token na ito ay gagamitin para patunayan ang mga request sa hinaharap.

Itinakda ang permission classes upang bigyan allowAny ng pahintulot ang sinuman dahil maaaring magkaroon ng access ang endpoint na ito.

Itinatago din natin ang huling log in time ng user sa pamamagitan ng code na ito.

Sa tuwing nais ng user na gumawa ng API request, kinakailangan nilang magpadala ng token sa in Auth Headers upang makumpirma ang request.

Subukan natin ang endpoint na ito sa pamamagitan ng Postman. Buksan ang Postman at gamitin ang request upang kumpirmahin ang isa sa mga user na ginawa mo dati. Kung tagumpay ang login, ganito ang magiging itsura ng response:

A sample response

Ang Pagkuha at Pag-update ng mga User

Sa ngayon, ang mga user ay maaari magrehistro at magkumpirma. Subalit, kailangan din nila ng paraan na kuhanin at i-update ang kanilang mga impormasyon. Subukan natin ito.

Sa users.views.py, ilagay ang mga sumusunod na code.

Una tukuyin natin ang mga permission classes at itakda sa IsAuthenticated dahil ito ay protektadong URL at ang mga authenticated users lamang ang may akses dito.

Pagkatapos tutukoy tayo ng isang get method upang makuha ang mga detalye ng user. Pagkatapos makuha ang mga detalye ng mga user, isang authenticated user ang magbabagong kanilang mga detalye batay sa nais.

I-update ang iyong mga URL upang tukuyin ang endpoint tulad ng sumusunod.

Upang maging matagumpay ang request, ang mga header ay dapat naglalaman ng JWT token tulad ng makikita sa ibaba.

Headers with the JWT Token

Kung susubukan mo na humiling ng resource ng walang authentication header, makukuha mo ang mga sumusunod na error.

An example error

Kung ang user ay nanatili nang higit pa sa oras na tinukoy sa JWT_EXPIRATION_DELTA nang walang request, mawawalang bisa ang token at kinakailangan nilang humiling ng isa pang token. Ito ay ipinapakita sa ibaba.

JWT_EXPIRATION_DELTA Example

Konklusyon

Ipinakita ng tutoryal na ito ang mahalaga upang makalikha nang matagumpay ng isang matatag na back-end authentication system sa pamamagitan ng JSON Web Tokens.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.