Implementatie van gebruikersauthenticatie en -autorisatie in Django

Gebruikersauthenticatie zorgt ervoor dat gebruikers veilig kunnen inloggen en toegang hebben tot hun accounts. Autorisatie bepaalt daarentegen welke acties geauthenticeerde gebruikers mogen uitvoeren. Django biedt een robuust authenticatiesysteem dat eenvoudig te integreren en uit te breiden is voor deze doeleinden.

Het standaardauthenticatiesysteem instellen

Het standaard authenticatiesysteem van Django is standaard opgenomen in de configuratie. Zorg ervoor dat de volgende apps worden vermeld in de sectie INSTALLED_APPS van uw settings.py:

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

Migreer de database om de benodigde tabellen in te stellen:

python manage.py migrate

Een gebruikersmodel maken

Django biedt een ingebouwd gebruikersmodel, maar u kunt indien nodig een aangepast model maken. Om het standaardmodel te gebruiken:

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

Om een ​​aangepast gebruikersmodel te maken, wijzigt u uw 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)

Werk de instelling AUTH_USER_MODEL bij in settings.py:

AUTH_USER_MODEL = 'yourapp.CustomUser'

Gebruikersaanmelding en -afmelding verwerken

Django biedt ingebouwde weergaven voor inloggen en uitloggen. Voeg de volgende URL's toe aan uw 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'),
]

Maak een eenvoudige loginsjabloon met de naam registration/login.html:

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

Toegang beperken met machtigingen

Django biedt toestemmingsklassen om toegang te beperken. Om ze in views te gebruiken:

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

Rechten kunnen worden toegewezen via de Django-beheerder of via de shell:

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)

Conclusie

Het authenticatie- en autorisatiesysteem van Django biedt een solide basis voor het beveiligen van uw webapplicaties. Het is zeer aanpasbaar, waardoor u de functionaliteit kunt uitbreiden om aan specifieke vereisten te voldoen. Met dit systeem kunt u eenvoudig gebruikersaccounts, rollen en machtigingen in uw projecten beheren.