Implementering af brugergodkendelse og -autorisation i Django
Brugergodkendelse sikrer, at brugere sikkert kan logge ind og få adgang til deres konti. Autorisation bestemmer på den anden side, hvilke handlinger godkendte brugere har tilladelse til at udføre. Django leverer et robust autentificeringssystem, der er nemt at integrere og udvide til disse formål.
Opsætning af standardgodkendelsessystemet
Djangos standardgodkendelsessystem er inkluderet i dets konfiguration som standard. Sørg for, at følgende apps er angivet i afsnittet INSTALLED_APPS
i dine settings.py
:
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
Migrer databasen for at opsætte de nødvendige tabeller:
python manage.py migrate
Oprettelse af en brugermodel
Django har en indbygget brugermodel, men du kan oprette en brugerdefineret model, hvis det er nødvendigt. Sådan bruger du standardmodellen:
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()
For at oprette en tilpasset brugermodel skal du ændre din 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)
Opdater indstillingen AUTH_USER_MODEL
i settings.py
:
AUTH_USER_MODEL = 'yourapp.CustomUser'
Håndtering af brugerlogin og logout
Django giver indbyggede visninger til login og logout. Tilføj følgende webadresser til din 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'),
]
Opret en simpel login-skabelon med navnet registration/login.html
:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Log in</button>
</form>
Begrænsning af adgang med tilladelser
Django giver tilladelsesklasser for at begrænse adgangen. Sådan bruger du dem i visninger:
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')
Tilladelser kan tildeles ved hjælp af Django-administratoren eller gennem skallen:
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)
Konklusion
Djangos godkendelses- og autorisationssystem giver et solidt grundlag for at sikre dine webapplikationer. Den er meget tilpasselig, så du kan udvide dens funktionalitet for at opfylde specifikke krav. Med dette system kan du nemt administrere brugerkonti, roller og tilladelser i dine projekter.