Implementarea autentificarea și autorizarea utilizatorilor în Django

Autentificarea utilizatorilor asigură că utilizatorii se pot conecta în siguranță și accesa conturile lor. Autorizarea, pe de altă parte, determină ce acțiuni au permisiunea de a efectua utilizatorii autentificați. Django oferă un sistem robust de autentificare care este ușor de integrat și extins în aceste scopuri.

Configurarea sistemului de autentificare implicit

Sistemul de autentificare implicit al Django este inclus în configurația sa în mod implicit. Asigurați-vă că următoarele aplicații sunt listate în secțiunea INSTALLED_APPS din settings.py:

'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',

Migrați baza de date pentru a configura tabelele necesare:

python manage.py migrate

Crearea unui model de utilizator

Django oferă un model de utilizator încorporat, dar puteți crea unul personalizat dacă este necesar. Pentru a utiliza modelul implicit:

from django.contrib.auth.models import User

# Creating a new user
user = User.objects.create_user(username='johndoe', password='securepassword')
user.email = 'johndoe@example.com'
user.save()

Pentru a crea un model de utilizator personalizat, modificați models.py:

from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    phone_number = models.CharField(max_length=15, blank=True, null=True)

Actualizați setarea AUTH_USER_MODEL în settings.py:

AUTH_USER_MODEL = 'yourapp.CustomUser'

Gestionarea autentificarea și deconectarea utilizatorului

Django oferă vizualizări încorporate pentru autentificare și deconectare. Adăugați următoarele adrese URL la urls.py:

from django.urls import path
from django.contrib.auth import views as auth_views

urlpatterns = [
    path('login/', auth_views.LoginView.as_view(), name='login'),
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]

Creați un șablon simplu de conectare numit registration/login.html:

<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">Log in</button>
</form>

Restricționarea accesului cu permisiuni

Django oferă clase de permisiuni pentru a restricționa accesul. Pentru a le folosi în vizualizări:

from django.contrib.auth.decorators import login_required, permission_required

@login_required
def dashboard(request):
    return render(request, 'dashboard.html')

@permission_required('yourapp.can_edit')
def edit_page(request):
    return render(request, 'edit_page.html')

Permisiunile pot fi atribuite folosind administratorul Django sau prin intermediul shell-ului:

from django.contrib.auth.models import User, Permission

user = User.objects.get(username='johndoe')
permission = Permission.objects.get(codename='can_edit')
user.user_permissions.add(permission)

Concluzie

Sistemul de autentificare și autorizare Django oferă o bază solidă pentru securizarea aplicațiilor dvs. web. Este foarte personalizabil, permițându-vă să extindeți funcționalitatea pentru a îndeplini cerințele specifice. Cu acest sistem, puteți gestiona cu ușurință conturile de utilizator, rolurile și permisiunile în proiectele dvs.