احراز هویت با گوگل در جنگو django-allauth

  • 1404/01/15

احراز هویت با شبکه های اجتماعی در  جنگو django-allauth

استفاده از شبکه‌های اجتماعی برای ورود به سیستم‌ها و سایت‌ها (که به آن Social Login یا Single Sign-On گفته می‌شود) مزایای زیادی برای کاربران و توسعه‌دهندگان دارد

از جمله مزایا:
سهولت در ورود: کاربران به راحتی از حساب‌های شبکه اجتماعی خود وارد می‌شوند بدون نیاز به یادآوری رمز عبور.

  • سرعت بیشتر: ثبت‌نام و ورود سریع‌تر به دلیل پر نشدن فرم‌های طولانی.
  • کاهش مشکلات بازیابی رمز عبور: نیازی به بازیابی رمز عبور نیست، فقط از حساب اجتماعی استفاده می‌شود.
  • افزایش نرخ تبدیل: کاربران بیشتر تمایل به ثبت‌نام و ورود سریع دارند.
  • مدیریت ساده‌تر حساب‌ها: تغییرات در حساب‌های اجتماعی به طور خودکار در همه سایت‌ها اعمال می‌شود.
  • اعتماد بیشتر: کاربران به شبکه‌های اجتماعی معتبر مثل گوگل و فیس‌بوک اعتماد دارند.
  • امنیت بیشتر: بسیاری از شبکه‌های اجتماعی از احراز هویت دو مرحله‌ای و امنیت بالا برخوردارند.
  • دسترسی به اطلاعات اضافی: می‌توان از اطلاعات اضافی مانند عکس پروفایل و موقعیت جغرافیایی بهره برد.

پکیج django-allauth یکی از محبوب‌ترین و کامل‌ترین پکیج‌ها برای احراز هویت و مدیریت حساب‌های کاربری در پروژه‌های Django است. این پکیج امکانات متنوعی از جمله ثبت‌نام، ورود، بازنشانی رمز عبور، تأیید ایمیل، احراز هویت از طریق شبکه‌های اجتماعی (مثل Google، Facebook، Twitter و ...) را فراهم می‌کند.

مراحل نصب و راه‌اندازی django-allauth

1. نصب پکیج

ابتدا باید پکیج django-allauth را نصب کنید. برای این کار از دستور pip استفاده کنید:

pip install django-allauth

2. تنظیمات پروژه Django

پس از نصب پکیج، باید تنظیمات مربوط به آن را در پروژه Django خود اضافه کنید.

  • افزودن پکیج‌ها به INSTALLED_APPS:

در فایل settings.py، به لیست INSTALLED_APPS موارد زیر را اضافه کنید:

INSTALLED_APPS = [
    ...
    'django.contrib.sites',  # این بخش ضروری است
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',  # برای استفاده از ورود گوگل
    ...
]
  • تنظیمات AUTHENTICATION_BACKENDS:

در فایل settings.py باید AUTHENTICATION_BACKENDS را تنظیم کنید تا از django-allauth برای احراز هویت استفاده شود:

AUTHENTICATION_BACKENDS = (
    'allauth.account.auth_backends.AuthenticationBackend',  # احراز هویت توسط allauth
)
  • تنظیم SITE_ID:

پکیج django-allauth نیاز دارد که شناسه سایت را در پروژه تعریف کنید. این کار را در settings.py انجام دهید:

SITE_ID = 1

3. تنظیمات URL

در فایل urls.py پروژه باید URLs مربوط به django-allauth را اضافه کنید:

from django.urls import path, include
urlpatterns = [
    path('accounts/', include('allauth.urls')),  # مسیرهای allauth
]

4. تنظیمات قالب‌ها

برای استفاده از قالب‌های پیش‌فرض django-allauth، می‌توانید از قالب‌های آماده این پکیج استفاده کنید. اگر می‌خواهید قالب‌های خودتان را بسازید، باید فایل‌های HTML زیر را در پروژه خود قرار دهید:

  • templates/account/login.html
  • templates/account/signup.html
  • templates/account/password_reset.html
  • templates/account/password_reset_done.html

5. پیکربندی شبکه‌های اجتماعی (اختیاری)

برای فعال‌سازی ورود از طریق شبکه‌های اجتماعی مانند گوگل، باید تنظیمات مربوط به آن‌ها را در settings.py انجام دهید. به عنوان مثال، برای گوگل:

  • ایجاد یک پروژه در 
  • دریافت Client ID و Client Secret
  • اضافه کردن تنظیمات در settings.py:
SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'SCOPE': ['profile', 'email'],
        'AUTH_PARAMS': {'access_type': 'online'},
        'OAUTH_PKCE_ENABLED': True,
    }
}

6. اجرای migrations

پس از انجام تنظیمات، باید migrations را اجرا کنید تا مدل‌های django-allauth در دیتابیس ایجاد شوند:

python manage.py migrate

7. راه‌اندازی پروژه

حال می‌توانید سرور Django را راه‌اندازی کنید:

python manage.py runserver

8. استفاده از سیستم ورود و ثبت‌نام

با انجام این مراحل، سیستم احراز هویت با استفاده از django-allauth در پروژه شما راه‌اندازی شده است. شما می‌توانید صفحات ورود و ثبت‌نام را از طریق URLهایی مانند /accounts/login/ یا /accounts/signup/ مشاهده کنید.

برخی از امکانات پکیج django-allauth

  • ثبت‌نام و ورود با ایمیل و رمز عبور
  • احراز هویت از طریق شبکه‌های اجتماعی (Facebook, Google, Twitter, ... )
  • بازنشانی رمز عبور
  • تأیید ایمیل پس از ثبت‌نام
  • ویرایش پروفایل کاربر
  • مدیریت حساب کاربری

نکات اضافی

  • برای استفاده از سیستم ورود با شبکه‌های اجتماعی، باید اپلیکیشن خود را در سرویس‌های مربوطه مانند Google Developer Console یا Facebook Developers ثبت کنید.
  • این پکیج امکانات بسیار بیشتری مانند تایید ایمیل، تایید دو مرحله‌ای و مدیریت حساب کاربری دارد.
عضویت در خبرنامه

رایگان ثبت نام کنید و اولین نفری باشید که از پست های جدید مطلع می شوید.