سیستم احراز هویت در جنگو: راهنمای کامل کاربران، گروه‌ها، مجوزها و سفارشی‌سازی

این مقاله یک مرور جامع از سیستم احراز هویت جنگو ارائه می‌دهد. موضوعاتی مانند کاربران، گروه‌ها، مجوزها، هش کردن رمز عبور، middlewareهای مرتبط، نحوهٔ نصب و استفاده از سیستم auth و مسیرهای سفارشی‌سازی بررسی می‌شود.

Django authentication، User modelPermissions، GroupsAuthorization، AuthenticationMiddleware، SessionMiddleware

~3 دقیقه مطالعه • بروزرسانی ۲۳ اسفند ۱۴۰۴

مقدمه

جنگو یک سیستم احراز هویت قدرتمند و انعطاف‌پذیر ارائه می‌دهد که مدیریت کاربران، گروه‌ها، مجوزها و نشست‌های مبتنی بر کوکی را بر عهده دارد. این سیستم هم authentication (تأیید هویت کاربر) و هم authorization (تعیین سطح دسترسی کاربر) را پوشش می‌دهد.


اجزای اصلی سیستم احراز هویت

سیستم auth جنگو شامل بخش‌های زیر است:

  • Users: مدل کاربر پیش‌فرض با نام کاربری، رمز عبور هش‌شده، ایمیل و فیلدهای پروفایل.
  • Permissions: مجوزهای دودویی (بله/خیر) برای تعیین اینکه کاربر چه کاری می‌تواند انجام دهد.
  • Groups: مجموعه‌ای از کاربران که می‌توانند مجوزهای مشترک داشته باشند.
  • Password hashing: سیستم هش رمز عبور قابل‌پیکربندی.
  • Forms & Views: ابزارهای آماده برای ورود، خروج و محدود کردن دسترسی.
  • Authentication backends: سیستم پلاگینی برای تعیین نحوهٔ احراز هویت.

جنگو عمداً ساده و عمومی طراحی شده است و برخی قابلیت‌ها را به پکیج‌های Third‑Party سپرده است، مانند:

  • بررسی قدرت رمز عبور
  • محدود کردن تعداد تلاش‌های ورود
  • OAuth و احراز هویت خارجی
  • مجوزهای سطح شیء (Object‑level permissions)

نصب و پیکربندی

سیستم احراز هویت در django.contrib.auth قرار دارد و به‌صورت پیش‌فرض در پروژه‌های جدید فعال است.

INSTALLED_APPS


'django.contrib.auth',
'django.contrib.contenttypes',

ContentTypes برای اتصال مجوزها به مدل‌ها ضروری است.

MIDDLEWARE

  • SessionMiddleware: مدیریت نشست‌ها
  • AuthenticationMiddleware: اتصال کاربر به request

با این تنظیمات، اجرای manage.py migrate جداول لازم را ایجاد می‌کند.


استفاده از سیستم احراز هویت

جنگو ابزارهای متنوعی برای کار با کاربران و مجوزها ارائه می‌دهد:

  • ایجاد و مدیریت کاربران
  • بررسی مجوزها
  • ورود و خروج کاربران
  • محدود کردن دسترسی به ویوها
  • مدیریت کاربران از طریق Django Admin

مستندات جنگو بخش‌های زیر را برای استفادهٔ کامل ارائه می‌دهد:

  • Working with User objects
  • Permissions and authorization
  • Authentication in web requests
  • Password management
  • Customizing the User model

کاربران (User Objects)

مدل کاربر پیش‌فرض شامل فیلدهای زیر است:

  • username
  • password (هش‌شده)
  • email
  • first_name / last_name
  • is_active / is_staff / is_superuser

می‌توانید کاربران را از طریق:

  • Admin
  • Shell
  • Viewها و فرم‌های سفارشی
مدیریت کنید.


مجوزها (Permissions)

هر مدل به‌صورت خودکار سه مجوز دریافت می‌کند:

  • add
  • change
  • delete

می‌توانید مجوزهای سفارشی نیز تعریف کنید.


گروه‌ها (Groups)

گروه‌ها راهی برای اختصاص مجموعه‌ای از مجوزها به چند کاربر هستند. مثلاً گروه "مدیر محتوا" می‌تواند مجوزهای مربوط به ویرایش پست‌ها را داشته باشد.


ورود و خروج کاربران

جنگو فرم‌ها و ویوهای آماده برای login و logout ارائه می‌دهد:

  • django.contrib.auth.views.LoginView
  • django.contrib.auth.views.LogoutView

همچنین می‌توانید از login() و logout() در viewهای خود استفاده کنید.


سفارشی‌سازی سیستم احراز هویت

جنگو امکان سفارشی‌سازی کامل User model را فراهم می‌کند:

  • جایگزینی کامل مدل کاربر (Custom User Model)
  • افزودن فیلدهای جدید با AbstractUser
  • نوشتن Authentication Backend سفارشی

جمع‌بندی

سیستم احراز هویت جنگو یکی از کامل‌ترین و انعطاف‌پذیرترین سیستم‌های موجود در فریم‌ورک‌های وب است. این سیستم مدیریت کاربران، مجوزها، گروه‌ها، نشست‌ها و ورود/خروج را به‌صورت یکپارچه فراهم می‌کند و در عین حال امکان سفارشی‌سازی کامل را نیز می‌دهد.

نوشته و پژوهش شده توسط دکتر شاهین صیامی