Middle
227
Django-da identifikasiya sisteminin necə işləyir?
AI-dan cavab
sobes.tech Süni İntellekt
Django-da autentifikasiya, istifadəçilər, qruplar və icazələr idarə edən plagin arxa uçuna əsaslanır.
Əsas komponentlər:
- İstifadəçilər:
django.contrib.auth.models.Usermodeli istifadəçilər haqqında məlumat saxlayır (ad, hash-lənmiş şifrə, email və s.). - Qruplar:
django.contrib.auth.models.Groupmodeli istifadəçiləri qruplaşdırır, icazələrin idarə olunmasını sadələşdirmək üçün. - İcazələr:
django.contrib.auth.models.Permissionmodeli istifadəçinin nə edə biləcəyini müəyyən edir (modelləri baxmaq, əlavə etmək, dəyişdirmək, silmək). - Autentifikasiya arxa uçları:
authenticate,get_user,has_perm,has_module_permsmetodlarını həyata keçirən sinflər. Standart olaraqdjango.contrib.auth.backends.ModelBackendistifadə olunur.
Autentifikasiya prosesi:
- İstifadəçi giriş və şifrə göndərir (adətən forma vasitəsilə).
- Django konfiqurasiya olunmuş arxa uçların
authenticate()metodunu çağırır və məlumatları ötürür. - Arxa uç istifadəçini login əsasında axtarır.
- Əgər istifadəçi tapılırsa, şifrə yoxlanır (hash-ləri müqayisə etməklə).
- Uğurlu yoxlamadan sonra,
authenticate()istifadəçi obyektini qaytarır. - Django
login()-u çağırır (görünüş və ya middleware-də), bu da istifadəçi üçün sessiyanı qurur.
Görünüşdə istifadə üçün nümunə:
# views.py
from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect
def login_view(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('some_success_page')
else:
# Autentifikasiya xətasının işlənməsi
pass
return render(request, 'login.html')
Əsas funksiyalar və dekoratorlar:
@login_required: İstifadəçinin autentifikasiyasını tələb edən görünüşlər üçün dekorator.@permission_required('app_label.permission_code'): Müəyyən icazəni tələb edən dekorator.user.is_authenticated: İstifadəçinin autentifikasiya olunub-olunmadığını yoxlayır.user.has_perm('app_label.permission_code'): İstifadəçinin müəyyən icazəyə sahib olub-olmadığını yoxlayır.user.has_module_perms('app_label'): İstifadəçinin modul üçün icazələri olub-olmadığını yoxlayır.
Quruluş:
AUTHENTICATION_BACKENDS: Qeydiyyatdan keçmiş arxa uçların siyahısı. Standart:['django.contrib.auth.backends.ModelBackend'].LOGIN_URL:@login_requiredistifadə edildikdə, qeyri-autentifikasiya olunmuş istifadəçilər üçün yönləndiriləcək URL.LOGIN_REDIRECT_URL: Uğurlu girişdən sonra yönləndiriləcək URL.