Implementieren der Benutzerauthentifizierung und -autorisierung in Django

Die Benutzerauthentifizierung stellt sicher, dass sich Benutzer sicher anmelden und auf ihre Konten zugreifen können. Die Autorisierung wiederum bestimmt, welche Aktionen authentifizierte Benutzer ausführen dürfen. Django bietet für diese Zwecke ein robustes Authentifizierungssystem, das sich leicht integrieren und erweitern lässt.

Einrichten des Standardauthentifizierungssystems

Das Standardauthentifizierungssystem von Django ist standardmäßig in seiner Konfiguration enthalten. Stellen Sie sicher, dass die folgenden Apps im Abschnitt INSTALLED_APPS Ihrer settings.py aufgeführt sind:

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

Migrieren Sie die Datenbank, um die erforderlichen Tabellen einzurichten:

python manage.py migrate

Erstellen eines Benutzermodells

Django bietet ein integriertes Benutzermodell, Sie können jedoch bei Bedarf ein benutzerdefiniertes Modell erstellen. So verwenden Sie das Standardmodell:

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

Um ein benutzerdefiniertes Benutzermodell zu erstellen, ändern Sie Ihre 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)

Aktualisieren Sie die Einstellung AUTH_USER_MODEL in settings.py:

AUTH_USER_MODEL = 'yourapp.CustomUser'

Handhabung der Benutzeranmeldung und -abmeldung

Django bietet integrierte Ansichten für die Anmeldung und Abmeldung. Fügen Sie die folgenden URLs zu Ihrer urls.py hinzu:

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

Erstellen Sie eine einfache Anmeldevorlage mit dem Namen registration/login.html:

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

Zugriff mit Berechtigungen einschränken

Django bietet Berechtigungsklassen, um den Zugriff einzuschränken. So verwenden Sie sie in Ansichten:

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

Berechtigungen können mit dem Django-Administrator oder über die Shell zugewiesen werden:

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)

Abschluss

Das Authentifizierungs- und Autorisierungssystem von Django bietet eine solide Grundlage für die Sicherung Ihrer Webanwendungen. Es ist hochgradig anpassbar, sodass Sie seine Funktionalität erweitern können, um spezifische Anforderungen zu erfüllen. Mit diesem System können Sie Benutzerkonten, Rollen und Berechtigungen in Ihren Projekten problemlos verwalten.