Django میں ایک مکمل، بلٹ ان تصدیق کا نظام (django.contrib.auth) شامل ہے جو صارفین، پاس ورڈ، سیشن/لاگ ان، اور اختیارات کو سنبھالتا ہے — یہ ایک اور "بیٹریز شامل" خصوصیت ہے جو آپ کو اس حفاظتی لحاظ سے اہم فعالیت کو بنانے (اور غلط کرنے) سے بچاتی ہے۔
Django میں ایک مکمل، بلٹ ان تصدیق کا نظام (django.contrib.auth) شامل ہے جو صارفین، پاس ورڈ، سیشن/لاگ ان، اور اختیارات کو سنبھالتا ہے — یہ ایک اور "بیٹریز شامل" خصوصیت ہے جو آپ کو اس حفاظتی لحاظ سے اہم فعالیت کو بنانے (اور غلط کرنے) سے بچاتی ہے۔
from django.contrib.auth.models import User
# passwords are HASHED automatically — never store plaintext
user = User.objects.create_user(username="ann", email="[email protected]", password="secret")
user.set_password("newpassword") # always use set_password (it hashes)
user.check_password("secret") # verify a password (constant-time)
بلٹ ان User ماڈل خود کار طور پر محفوظ پاس ورڈ ہیشنگ کو سنبھالتا ہے (PBKDF2 جیسی مضبوط الگورتھم استعمال کرتے ہوئے) — آپ کبھی سادہ ٹیکسٹ پاس ورڈز محفوظ نہیں کرتے یا موازنہ نہیں کرتے، ایک بڑے حفاظتی خطرے کو ختم کرتے ہوئے۔
from django.contrib.auth import authenticate, login, logout
def login_view(request):
user = authenticate(request, username=username, password=password) # verify credentials
if user is not None:
login(request, user) # establish a SESSION (sets request.user)
return redirect("home")
# else: invalid credentials
def logout_view(request):
logout(request) # clear the session
authenticate() اعتماد کی تصدیق کرتا ہے، اور login() ایک سیشن قائم کرتا ہے — اس کے بعد request.user ہر درخواست پر لاگ ان شدہ صارف ہے (تصدیق middleware کے ذریعے)۔
from django.contrib.auth.decorators import login_required
@login_required # redirect to login if not authenticated
def dashboard(request):
return render(request, "dashboard.html", {"user": request.user})
# for class-based views:
from django.contrib.auth.mixins import LoginRequiredMixin
class DashboardView(LoginRequiredMixin, ListView): ...
# checking permissions
request.user.is_authenticated # is someone logged in?
request.user.is_staff / is_superuser # role flags
request.user.has_perm("blog.add_article")# a specific permission
request.user.groups.all() # group membership (role-based access)
@permission_required("blog.add_article")
def create_article(request): ...
Django تصدیق (آپ کون ہیں — لاگ ان) کو اختیار (آپ کیا کر سکتے ہیں — اختیارات) سے الگ کرتا ہے۔ یہ ماڈل فی اختیارات (شامل کریں/تبدیل کریں/حذف کریں/دیکھیں)، کردار کی بنیاد پر رسائی کے لیے گروپس، اور انہیں نافذ کرنے کے لیے ڈیکوریٹرز/mixins فراہم کرتا ہے۔
✓ Ready-made views/URLs for login, logout, password change/reset (django.contrib.auth.urls)
✓ Customizable: a CUSTOM USER MODEL (recommended from the start) to add fields,
custom backends (e.g. authenticate via email or OAuth), password validators
Django کا بلٹ ان تصدیق کا نظام ایک بڑی، حفاظتی لحاظ سے اہم خصوصیت ہے جو آپ کو ایک ویب ایپلیکیشن کے سب سے غلط ہونے اور خطرناک حصوں میں سے ایک بنانے سے بچاتی ہے۔
اس کو سمجھنا ضروری ہے کیونکہ تقریباً ہر حقیقی ایپلیکیشن کو صارف کے اکاؤنٹس، لاگ ان، اور رسائی کنٹرول کی ضرورت ہے — اور تصدیق کو غلط کریں سنگین حفاظتی کمزوریوں کو تخلیق کریں (سادہ ٹیکسٹ پاس ورڈز، کمزور ہیشنگ، سیشن کی خرابیاں)۔
Django کا نظام یہ صندوق سے صحیح طریقے سے سنبھالتا ہے: یہ پاس ورڈز کو محفوظ طریقے سے ہیش کرتا ہے (مضبوط الگورتھم، کبھی سادہ ٹیکسٹ نہیں — آپ create_user/set_password/check_password استعمال کرتے ہیں بجائے پاس ورڈز کو دستی طور پر سنبھالنے کے)، سیشنز اور لاگ ان کو سنبھالتا ہے (authenticate/login، request.user کے ساتھ ہر جگہ middleware کے ذریعے دستیاب)، اور ایک مکمل اختیارات اور گروپس کے نظام کے ذریعے اختیار فراہم کرتا ہے۔
یہ جاننا کہ صارفین کو کیسے بنایا اور تصدیق دی جائے، نقطہ نظر کو محفوظ کریں (@login_required, LoginRequiredMixin)، اور اختیار کو اختیارات اور گروپس کے ذریعے نافذ کریں (تصدیق — آپ کون ہیں — سے الگ کریں آپ کیا کرنے کی اجازت ہے) بنانے کے لیے بنیادی ہے محفوظ درخواستوں۔
نظام کی توسیع پذیری — خاص طور پر ایک اپنی مرضی کے مطابق صارف ماڈل (پروجیکٹ کے شروع سے سخت سفارش کی جاتی ہے) استعمال کریں فیلڈز کو شامل کرنے کے لیے، اور ای میل/OAuth لاگ ان کے لیے اپنے backend — عملی علم کے لیے اہم ہے۔
کیونکہ تصدیق ہر جگہ ہے اور حفاظتی لحاظ سے اہم ہے، اور کیونکہ Django ایک مضبوط، صحیح، بیٹریز شامل حل فراہم کرتا ہے، اس کے auth نظام میں مہارت حاصل کرنا بنیادی علم ہے جو آپ کو محفوظ صارف کو سامنے کی طرف درخواستوں کو بنانے کی اجازت دیتا ہے بغیر اس بنیادی فعالیت کو دوبارہ بنانے (اور خطرے میں ڈالنے) کے۔