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.