~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 (هششده)
- first_name / last_name
- is_active / is_staff / is_superuser
میتوانید کاربران را از طریق:
- Admin
- Shell
- Viewها و فرمهای سفارشی
مجوزها (Permissions)
هر مدل بهصورت خودکار سه مجوز دریافت میکند:
- add
- change
- delete
میتوانید مجوزهای سفارشی نیز تعریف کنید.
گروهها (Groups)
گروهها راهی برای اختصاص مجموعهای از مجوزها به چند کاربر هستند. مثلاً گروه "مدیر محتوا" میتواند مجوزهای مربوط به ویرایش پستها را داشته باشد.
ورود و خروج کاربران
جنگو فرمها و ویوهای آماده برای login و logout ارائه میدهد:
django.contrib.auth.views.LoginViewdjango.contrib.auth.views.LogoutView
همچنین میتوانید از login() و logout() در viewهای خود استفاده کنید.
سفارشیسازی سیستم احراز هویت
جنگو امکان سفارشیسازی کامل User model را فراهم میکند:
- جایگزینی کامل مدل کاربر (Custom User Model)
- افزودن فیلدهای جدید با AbstractUser
- نوشتن Authentication Backend سفارشی
جمعبندی
سیستم احراز هویت جنگو یکی از کاملترین و انعطافپذیرترین سیستمهای موجود در فریمورکهای وب است. این سیستم مدیریت کاربران، مجوزها، گروهها، نشستها و ورود/خروج را بهصورت یکپارچه فراهم میکند و در عین حال امکان سفارشیسازی کامل را نیز میدهد.
نوشته و پژوهش شده توسط دکتر شاهین صیامی