Implementera användarautentisering och auktorisering i Django
Användarautentisering säkerställer att användare säkert kan logga in och komma åt sina konton. Auktorisering, å andra sidan, avgör vilka åtgärder autentiserade användare tillåts utföra. Django tillhandahåller ett robust autentiseringssystem som är lätt att integrera och utöka för dessa ändamål.
Konfigurera standardautentiseringssystemet
Djangos standardautentiseringssystem ingår som standard i dess konfiguration. Se till att följande appar är listade i avsnittet INSTALLED_APPS
i din settings.py
:
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
Migrera databasen för att skapa de nödvändiga tabellerna:
python manage.py migrate
Skapa en användarmodell
Django tillhandahåller en inbyggd användarmodell, men du kan skapa en anpassad om det behövs. Så här använder 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()
För att skapa en anpassad användarmodell, ändra 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)
Uppdatera AUTH_USER_MODEL
inställningen i settings.py
:
AUTH_USER_MODEL = 'yourapp.CustomUser'
Hantera användarinloggning och utloggning
Django tillhandahåller inbyggda vyer för inloggning och utloggning. Lägg till följande webbadresser till 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'),
]
Skapa en enkel inloggningsmall med namnet registration/login.html
:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Log in</button>
</form>
Begränsa åtkomst med behörigheter
Django tillhandahåller behörighetsklasser för att begränsa åtkomst. Så här använder du dem i vyer:
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')
Behörigheter kan tilldelas med hjälp av Django-admin eller genom skalet:
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)
Slutsats
Djangos autentiserings- och auktoriseringssystem ger en solid grund för att säkra dina webbapplikationer. Den är mycket anpassningsbar, vilket gör att du kan utöka dess funktionalitet för att möta specifika krav. Med det här systemet kan du enkelt hantera användarkonton, roller och behörigheter i dina projekt.