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

این مقاله یک مرور جامع از سیستم احراز هویت جنگو ارائه می‌دهد. موضوعاتی مانند کاربران، گروه‌ها، مجوزها، هش کردن رمز عبور، 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 سفارشی

جمع‌بندی

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

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

مقالات مرتبط

فریم‌ورک Tasks در Django: راهنمای کامل اجرای کارهای پس‌زمینه در Django 6.0

Django 6.0 فریم‌ورک Tasks را معرفی کرده است؛ سیستمی داخلی برای تعریف و صف‌بندی کارهای پس‌زمینه خارج از چرخهٔ request–response. این مقاله نحوهٔ کار Tasks، پیکربندی backendها، تعریف و enqueue کردن Taskها، استفاده از context، و ادغام با سیستم‌های Worker خارجی را توضیح می‌دهد.

ادامه

پشتیبانی Asynchronous در Django: راهنمای کامل Async Views، ORM، Middleware، عملکرد و ایمنی

این مقاله پشتیبانی Django از برنامه‌نویسی غیرهم‌زمان (async) را توضیح می‌دهد. موضوعاتی مانند async views، اجرای Django تحت ASGI، رفتار middleware، قابلیت‌های ORM غیرهم‌زمان، sync_to_async، مدیریت قطع اتصال، نکات عملکردی، و مکانیزم‌های ایمنی Django برای جلوگیری از استفادهٔ ناامن async بررسی می‌شوند.

ادامه

System Check Framework در Django: راهنمای کامل نوشتن، ثبت، اجرا و تست چک‌های سیستمی

System Check Framework در Django مجموعه‌ای از بررسی‌های استاتیک برای تشخیص مشکلات رایج در پروژه است. این مقاله نحوهٔ اجرای چک‌ها، نوشتن چک‌های سفارشی، مدیریت پیام‌ها، برچسب‌گذاری چک‌ها، افزودن چک به مدل‌ها و فیلدها، و نوشتن تست‌های واحد و یکپارچه برای چک‌ها را توضیح می‌دهد.

ادامه

سیگنال‌ها در Django: راهنمای کامل استفاده، اتصال، ارسال و مدیریت Signalها

این مقاله سیستم سیگنال‌های Django را توضیح می‌دهد؛ مکانیزمی برای اطلاع‌رسانی رویدادها بین بخش‌های مختلف برنامه بدون ایجاد وابستگی مستقیم. موضوعاتی مانند نحوهٔ اتصال receiverها، استفاده از decorator، مدیریت senderهای خاص، محل مناسب قرارگیری کد سیگنال‌ها، هشدارهای مهم، و بهترین شیوه‌ها بررسی می‌شوند.

ادامه

آشنایی کامل با Django Settings: پیکربندی، مدیریت محیط، و بهترین شیوه‌ها

این مقاله یک راهنمای جامع دربارهٔ سیستم تنظیمات در Django ارائه می‌دهد. موضوعاتی مانند ساختار فایل تنظیمات، نحوهٔ تعیین DJANGO_SETTINGS_MODULE، استفاده از settings در کد، امنیت، پیکربندی دستی با configure()، استفادهٔ مستقل از Django با django.setup() و ایجاد تنظیمات سفارشی بررسی می‌شوند.

ادامه

سریال‌سازی و دسریال‌سازی در Django: راهنمای کامل کار با Serialization Framework

این مقاله سیستم سریال‌سازی Django را توضیح می‌دهد؛ از نحوهٔ تبدیل مدل‌ها به JSON، XML، YAML و JSONL گرفته تا دسریال‌سازی داده‌ها، سریال‌سازی فیلدهای انتخابی، کار با مدل‌های ارث‌بری، مدیریت روابط، و نکات مهم هنگام ذخیرهٔ داده‌های دسریال‌شده.

ادامه