Django Allauth 电子邮件注册 - 自定义逻辑



我正在使用django 1.10和django-allauth在我的网站上进行身份验证。

对于电子邮件/密码(即非社交(登录,我希望能够放置代码来检查电子邮件 - 以便我禁止从某些众所周知的垃圾邮件域注册。

所以我想合并这样的逻辑:

BANNED_DOMAINS = ('foobar.com', 'foo.biz', 'example.')
def email_has_banned_domain(email):
found = False
for x in BANNED_DOMAINS:
if x in email:
found = True
break
return found

那么,我该如何将这个简单的功能合并到 allautrh 工作流程中,以防止来自禁止域的启动?

自定义 allauth 流的常用方法是定义自定义适配器。该文档没有列出所有钩子,但查看源代码会显示一个应该执行所需操作的clean_email()方法。

验证电子邮件值。如果您想(动态(限制可以选择的电子邮件地址,则可以挂接到此内容。

这样的事情应该有效:

from allauth.account.adapter import DefaultAccountAdapter
class MyAdapter(DefaultAccountAdapter):
def clean_email(self, email):
email = super().clean_email(email)
if email_has_banned_domain(email):
raise forms.ValidationError("Your domain is bad.")
return email

最新更新