Implementering av brukerautentisering og autorisasjon i Django

Brukerautentisering sikrer at brukere sikkert kan logge på og få tilgang til kontoene sine. Autorisasjon på den annen side bestemmer hvilke handlinger autentiserte brukere har lov til å utføre. Django gir et robust autentiseringssystem som er enkelt å integrere og utvide for disse formålene.

Sette opp standard autentiseringssystem

Djangos standard autentiseringssystem er inkludert i konfigurasjonen som standard. Sørg for at følgende apper er oppført i INSTALLED_APPS-delen av settings.py:

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

Migrer databasen for å sette opp de nødvendige tabellene:

python manage.py migrate

Opprette en brukermodell

Django har en innebygd brukermodell, men du kan lage en tilpasset modell om nødvendig. Slik bruker 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 å lage en tilpasset brukermodell, endre 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)

Oppdater AUTH_USER_MODEL-innstillingen i settings.py:

AUTH_USER_MODEL = 'yourapp.CustomUser'

Håndtering av brukerpålogging og utlogging

Django har innebygde visninger for pålogging og utlogging. Legg til følgende nettadresser til 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'),
]

Lag en enkel påloggingsmal kalt registration/login.html:

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

Begrensning av tilgang med tillatelser

Django gir tillatelsesklasser for å begrense tilgangen. Slik bruker 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')

Tillatelser kan tildeles ved hjelp av Django-administratoren eller gjennom skallet:

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)

Konklusjon

Djangos autentiserings- og autorisasjonssystem gir et solid grunnlag for å sikre nettapplikasjonene dine. Den er svært tilpassbar, slik at du kan utvide funksjonaliteten for å møte spesifikke krav. Med dette systemet kan du enkelt administrere brukerkontoer, roller og tillatelser i prosjektene dine.