用途:为 Django 项目提供本地与社交认证,覆盖注册、登录、登出、邮箱验证及多家 OAuth 提供商接入,并可选多因素认证、OIDC 提供商与无头 REST API。
主要能力:本地账号(注册、登录、密码重置、邮箱验证);OAuth 提供商(Google、GitHub、Facebook 等);MFA(TOTP、WebAuthn、恢复码);Headless REST API(JWT 或会话令牌策略);会话管理;自定义适配器;信号机制(user_signed_up、user_logged_in、email_confirmed、password_changed、social_account_added);模板可覆盖;OIDC Provider(65.x 新增)。
安装:pip install django-allauth,可选 pip install django-allauth[socialaccount]、pip install django-allauth[mfa]。
基本配置:在 INSTALLED_APPS 加入 django.contrib.auth、django.contrib.messages、django.contrib.sites 与 allauth、allauth.account、allauth.socialaccount;AUTHENTICATION_BACKENDS 设为 allauth.account.auth_backends.AuthenticationBackend;设置 SITE_ID;在 urls.py 用 include('allauth.urls')。常用设置包括 ACCOUNT_AUTHENTICATION_METHOD、ACCOUNT_EMAIL_REQUIRED、ACCOUNT_USERNAME_REQUIRED、ACCOUNT_EMAIL_VERIFICATION、LOGIN_REDIRECT_URL、ACCOUNT_LOGOUT_REDIRECT_URL。社交登录需安装对应 provider 应用并在管理后台配置 SocialApp。MFA 需加入 allauth.mfa 并设置 MFA_ENABLED 与 MFA_SUPPORTED_AUTHENTICATORS。Headless 需加入 allauth.headless 并设置 ALLAUTH_HEADLESS_TOKEN_STRATEGY 等。
适配器:可通过 ACCOUNT_ADAPTER 与 SOCIALACCOUNT_ADAPTER 自定义注册保存、邮箱校验、社交登录合并与域名限制等逻辑,而非修改内部实现。
限制:仅适合需要社交提供商或复杂邮件流程的项目;纯 API/无头项目可能更适合 simplejwt 或自定义视图;已有自定义用户模型或既有认证逻辑时,迁移前需评估冲突;邮箱验证依赖正确 SMTP 配置,生产环境不应使用 console backend。