gpt4 book ai didi

Django 社交授权 : Google OAuth2 - only display emails from restricted domain list

转载 作者:行者123 更新时间:2023-12-02 20:22:41 25 4
gpt4 key购买 nike

我在网站上有 Django Social Auth(pypi 包social-auth-app-django)与 Google OAuth2 配合使用。

当他们打开页面时,他们会被重定向到 Google 的 OAuth2 身份验证。这非常有效,如果他们尝试使用不在我的限制列表中的电子邮件地址登录,他们会收到 AuthForbidden 异常。我为此添加了一个陷阱,并向他们显示一个不允许他们登录此网站的页面。到目前为止一切都很好。

但是,我首先不希望无效的电子邮件帐户出现在 Google 身份验证页面的列表中。在使用带参数的 javascript 之前,我已经通过手动调用身份验证页面来完成此操作,但我不确定如何使用封装的 Django 社交身份验证模块来执行此操作。

这可以做到吗?如果可以,怎么做?

我有一个中间件,可以检测用户是否未登录并返回一个 login() View ,该 View 将用户重定向到 Google 身份验证页面。

View .py

# Login using OAuth2.
@csrf_protect
def login(request):
next_page = request.path
if next_page is None or next_page == '':
next_page = request.POST.get('next', request.GET.get('next', ''))

# Check if they are already logged in and redirect them to the original page if so.
if hasattr(request, 'user') and request.user.is_authenticated:
return HttpResponseRedirect(next_page)

# Otherwise, send them to the OAuth2 page with the request url as the next parameter.
else:
return HttpResponseRedirect('/soc/login/google-oauth2?next=' + next_page + '&hd=mydomain.com')

编辑 - 添加图片以阐明我的目的...

我要求的是,当弹出 Google OAuth2 对话框,要求选择用于登录的电子邮件地址或添加新电子邮件地址时,只有来自受限制域的电子邮件才会显示为选项。此图显示了 Google 登录信息以及之前已通过身份验证的两个帐户。其中一个是个人 Gmail 帐户,我不希望在此处显示该帐户。另一个来自白名单中的域,也是我想在此处显示的唯一一个: enter image description here

最佳答案

对于 Google,您可以通过定义设置来限制列出给定域的帐户:

SOCIAL_AUTH_GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS = {
'hd': 'yourdomain.com'
}

关于Django 社交授权 : Google OAuth2 - only display emails from restricted domain list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50955769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com