הטמעת אימות משתמש והרשאה ב-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 מספק תצוגות מובנות עבור כניסה והתנתקות. הוסף את כתובות האתרים הבאות ל-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 או דרך המעטפת:

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 מספקת בסיס איתן לאבטחת יישומי האינטרנט שלך. היא ניתנת להתאמה אישית רבה, מה שמאפשר לך להרחיב את הפונקציונליות שלו כדי לעמוד בדרישות ספציפיות. עם מערכת זו, תוכל לנהל בקלות חשבונות משתמשים, תפקידים והרשאות בפרויקטים שלך.