3 වන ඒකකය: පරිශීලක සත්යාපනය (User Authentication)
ඕනෑම වෙබ් යෙදුමක අත්යවශ්යම කොටසක් තමයි පරිශීලක ගිණුම් පද්ධතිය. Django වල තියෙන ලොකුම වාසියක් තමයි, මේ සම්පූර්ණ පද්ධතියම (ලියාපදිංචිය, login, logout, password reset) අපිට හදලම දීලා තියෙන එක. අපි බලමු ඒක පාවිච්චි කරන්නේ කොහොමද කියලා.
Django ගේ තෑග්ග: `auth` App එක
පියවර 1: පරිශීලක දත්ත සඳහා Database Tables සෑදීම
මේ `auth` app එකට අදාළව පරිශීලකයන්ගේ නම්, මුරපද (passwords), email වැනි දත්ත ගබඩා කරන්න database එකේ වගු (tables) හදන්න ඕන. අපි `settings.py` වල `INSTALLED_APPS` බලද්දී `django.contrib.auth` කියන app එක කලින්ම ඇතුළත් වෙලා තිබුණා. ඒ නිසා අපිට තියෙන්නේ මේ command එක run කරන එක විතරයි.
# auth app එකට සහ අනෙකුත් default apps වලට අදාළ database tables සාදයි
python manage.py migrate
මේ command එකෙන් පස්සේ, ඔයාගේ SQLite database file එක ඇතුළේ users, groups, permissions වගේ දේවල් වලට අදාළ tables හැදෙනවා.
පියවර 2: Superuser කෙනෙක් (පරිපාලක) සෑදීම
වෙබ් අඩවියේ සියලුම දේ පාලනය කරන්න පුළුවන් admin කෙනෙක් අපිට ඕන. Django වල ඒකට කියන්නේ Superuser කියලා. Terminal එකේ මේ command එක run කරලා ඔයාගේ admin account එක හදාගන්න.
python manage.py createsuperuser
ඉන්පසු එය ඔබෙන් username, email සහ password එකක් ඉල්ලයි. ඒවා ලබා දුන් පසු ඔබගේ superuser ගිණුම සෑදේ.
- `python manage.py runserver` මගින් server එක run කරන්න.
- Browser එකේ http://127.0.0.1:8000/admin වෙත යන්න.
- ඔබ දැන් සෑදූ superuser ගේ username සහ password දී login වෙන්න. Django Admin Panel එක ඔබට දැකගත හැකිවේවි!
පියවර 3: පිටු ආරක්ෂා කිරීම (`@login_required`)
අපේ වෙබ් අඩවියේ සමහර පිටු (උදා: dashboard, profile page) බලන්න පුළුවන් වෙන්න ඕන login වුණු අයට විතරයි. ඒ වගේ පිටුවක් (view) ආරක්ෂා කරන්න Django අපිට හරිම ලේසි ක්රමයක් දීලා තියෙනවා. ඒ තමයි `@login_required` decorator එක.
අපි පස්සේ හදන views වලදී, view function එකට උඩින් `@login_required` කියලා එකතු කළාම ඒ কাজේ ඉබේම වෙනවා.
# notes/views.py (අනාගතයේදී අප හදන ආකාරය)
from django.contrib.auth.decorators import login_required
@login_required
def user_dashboard(request):
# මෙම පිටුවට පිවිසිය හැක්කේ ලොග් වූ පරිශීලකයින්ට පමණි
return render(request, 'dashboard.html')
කවුරුහරි login නොවී මේ පිටුවට එන්න හැදුවොත්, Django ඉබේම ඔහුව login පිටුවට යොමු කරනවා.