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.