我正在使用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