我是Django的新手。我使用django-allauth设置了单击登录。我从Google api控制台获取了域凭据(client_id和secret_key)。但是问题是django-allauth是,允许我从任何Google帐户登录,同时我希望将电子邮件地址限制为我的域(@ example.com而不是@ gmail.com)
django-social-auth具有为此列出的白名单domains参数,如何在allauth中包括此信息?
在django-social-auth上花了几个小时后,我发现django-allauth设置起来要容易得多
任何帮助将非常感激。
最佳答案
回答我自己的问题-
您要做的是在社交帐户提供商对用户进行身份验证之后,在用户继续进入其个人资料页面之前,停止登录。您可以使用
中中的DefaultSocialAccountAdapter 类的 pre_social_login 方法allauth/socialaccount/adaptor.py
做类似的事情
from allauth.socialaccount.adaptor import DefaultSocialAccountAdapter
class MySocialAccount(DefaultSocialAccountAdapter):
def pre_social_login(self, request, sociallogin):
u = sociallogin.account.user
if not u.email.split('@')[1] == "example.com"
raise ImmediateHttpResponse(render_to_response('error.html'))
这不是一个确切的实现,但是类似的东西可以工作。关于django-allauth:仅允许来自特定Google Apps域的用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19113623/