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.