تنفيذ مصادقة المستخدم والترخيص في Django

تضمن مصادقة المستخدم أن يتمكن المستخدمون من تسجيل الدخول والوصول إلى حساباتهم بأمان. من ناحية أخرى، تحدد التفويضات الإجراءات التي يُسمح للمستخدمين المعتمدين بتنفيذها. يوفر Django نظام مصادقة قويًا يسهل دمجه وتوسيعه لهذه الأغراض.

إعداد نظام المصادقة الافتراضي

يتم تضمين نظام المصادقة الافتراضي الخاص بـ Django في تكوينه افتراضيًا. تأكد من إدراج التطبيقات التالية في قسم INSTALLED_APPS في settings.py:

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

نقل قاعدة البيانات لإعداد الجداول اللازمة:

python manage.py migrate

إنشاء نموذج المستخدم

يوفر Django نموذج مستخدم مدمجًا، ولكن يمكنك إنشاء نموذج مخصص إذا لزم الأمر. لاستخدام النموذج الافتراضي:

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()

لإنشاء نموذج مستخدم مخصص، قم بتعديل 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)

تحديث الإعداد AUTH_USER_MODEL في settings.py:

AUTH_USER_MODEL = 'yourapp.CustomUser'

التعامل مع تسجيل دخول المستخدم وتسجيل الخروج

يوفر Django عرضًا مدمجًا لتسجيل الدخول وتسجيل الخروج. أضف عناوين URL التالية إلى ملف 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'),
]

قم بإنشاء قالب تسجيل دخول بسيط باسم registration/login.html:

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

تقييد الوصول بالأذونات

يوفر Django فئات أذونات لتقييد الوصول. لاستخدامها في العروض:

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')

يمكن تعيين الأذونات باستخدام مسؤول Django أو من خلال 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)

خاتمة

يوفر نظام المصادقة والتفويض الخاص بـ Django أساسًا قويًا لتأمين تطبيقات الويب الخاصة بك. وهو قابل للتخصيص بدرجة كبيرة، مما يتيح لك توسيع وظائفه لتلبية متطلبات محددة. باستخدام هذا النظام، يمكنك بسهولة إدارة حسابات المستخدمين والأدوار والأذونات في مشاريعك.