You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Django-allAuth的Google OAuth2仅允许企业邮箱登录

实现企业域名邮箱限制登录方案

步骤1:修改settings.py配置

首先在配置文件中添加允许登录的邮箱域名列表,同时指定自定义的社交账号适配器路径,你可以删除原配置中SOCIAL_AUTH_PIPELINE和SOCIAL_AUTH_DISCONNECT_PIPELINE两个配置项,这是python-social-auth库的配置,你当前使用的是django-allauth认证体系,不需要这两项配置。
修改后的相关配置如下:

INSTALLED_APPS = [
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',
    # 你的其他应用
]

# 新增:允许登录的企业邮箱域名列表
ALLOWED_EMAIL_DOMAINS = ['example.com', 'xyzcompany.com', 'abccompany.com']
# 新增:指定自定义的社交账号适配器路径,请替换为你实际存放适配器的应用路径
SOCIALACCOUNT_ADAPTER = 'users.adapters.GoogleSocialAccountAdapter'

AUTHENTICATION_BACKENDS = [
    'allauth.account.auth_backends.AuthenticationBackend',
]

SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'SCOPE': [
            'profile',
            'email',
        ],
        'AUTH_PARAMS': {
            'access_type': 'online',
        }
    }
}

SITE_ID = 1
LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'

步骤2:创建自定义社交账号适配器

在你的Django应用(比如名为users或者common的公共应用)下新建adapters.py文件,写入以下代码:

from allauth.socialaccount.adapter import DefaultSocialAccountAdapter
from django.core.exceptions import PermissionDenied
from django.conf import settings

class GoogleSocialAccountAdapter(DefaultSocialAccountAdapter):
    def pre_social_login(self, request, sociallogin):
        # 仅校验谷歌OAuth登录的账号
        if sociallogin.account.provider != 'google':
            return
        # 提取OAuth返回的邮箱信息
        email = sociallogin.account.extra_data.get('email', '').lower()
        if not email:
            raise PermissionDenied('无法获取邮箱信息,登录失败')
        # 拆分获取邮箱域名
        domain = email.split('@')[-1]
        # 校验域名是否在允许列表
        if domain not in settings.ALLOWED_EMAIL_DOMAINS:
            raise PermissionDenied('仅允许企业域名邮箱登录,请勿使用个人Gmail账号')

步骤3:验证效果

重启Django服务后即可生效:个人Gmail账号登录时会直接被拦截返回403错误,只有你配置的企业域名邮箱可以正常完成登录流程。你也可以自定义项目的403页面,给用户更友好的错误提示。

内容的提问来源于stack exchange,提问作者Akash Rathor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:27:03