Wdrażanie uwierzytelniania i autoryzacji użytkowników w Django

Uwierzytelnianie użytkownika zapewnia użytkownikom bezpieczne logowanie się i dostęp do ich kont. Autoryzacja z kolei określa, jakie działania uwierzytelnieni użytkownicy mogą wykonywać. Django zapewnia solidny system uwierzytelniania, który jest łatwy do zintegrowania i rozszerzenia w tych celach.

Konfigurowanie domyślnego systemu uwierzytelniania

Domyślny system uwierzytelniania Django jest domyślnie zawarty w jego konfiguracji. Upewnij się, że następujące aplikacje są wymienione w sekcji INSTALLED_APPS pliku settings.py:

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

Migracja bazy danych w celu skonfigurowania niezbędnych tabel:

python manage.py migrate

Tworzenie modelu użytkownika

Django udostępnia wbudowany model użytkownika, ale możesz utworzyć własny, jeśli to konieczne. Aby użyć domyślnego modelu:

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()

Aby utworzyć niestandardowy model użytkownika, zmodyfikuj plik 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)

Zaktualizuj ustawienie AUTH_USER_MODEL w settings.py:

AUTH_USER_MODEL = 'yourapp.CustomUser'

Obsługa logowania i wylogowywania użytkowników

Django zapewnia wbudowane widoki do logowania i wylogowywania. Dodaj następujące adresy URL do swojego 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'),
]

Utwórz prosty szablon logowania o nazwie registration/login.html:

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

Ograniczanie dostępu za pomocą uprawnień

Django udostępnia klasy uprawnień, aby ograniczyć dostęp. Aby użyć ich w widokach:

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')

Uprawnienia można przypisać za pomocą administratora Django lub poprzez powłokę:

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)

Wniosek

System uwierzytelniania i autoryzacji Django zapewnia solidną podstawę do zabezpieczania aplikacji internetowych. Jest wysoce konfigurowalny, co pozwala na rozszerzenie jego funkcjonalności w celu spełnienia określonych wymagań. Dzięki temu systemowi możesz łatwo zarządzać kontami użytkowników, rolami i uprawnieniami w swoich projektach.