django allauth自定义登录,除了电子邮件和密码外,还进行了其他检查

溢出

这是我来自Allauth的自定义登录表单

class CustomLoginForm(LoginForm):
    def __init__(self,*args,**kwargs):
        super(CustomLoginForm,self).__init__(*args,**kwargs)
        self.fields['login'].widget.attrs['class'] = 'form-control'
        self.fields['password'].widget.attrs['class'] = 'form-control' 

    def login(self, *args, **kwargs):
        return super(CustomLoginForm, self).login(*args, **kwargs)

当我仅使用“电子邮件”和“密码”,并且要检查其他选项时,例如上面的custom_fieldtrue时,以上方法效果很好

我看到了这个参考,https://django-allauth.readthedocs.io/en/latest/forms.html#login-allauth-account-forms-loginform,它说添加了您的处理,但是我对如何做到这一点感到震惊。 。 有任何想法吗?

Dirkgroten

这是一个Form您可以像为其他任何Django表单一样向其添加任何字段并且您可以覆盖clean_my_field()orclean()方法来检查该字段的值ValidationError是否正确,并像其他任何形式一样引发一个不正确的值。

login()方法仅用于实际登录用户,如果要在用户登录时执行一些特殊操作,则只需要覆盖它即可。仅当表单有效时才调用此方法。因此,您根本不需要重写此方法。

如果您实际上不是在表单中添加字段,而是仅在对用户进行身份验证时需要在用户上添加检查,那么您不应在表单中进行此操作,而应在身份验证后端中进行此操作覆盖allauth身份验证后端,以在对用户进行身份验证时添加检查:

from allauth.account.auth_backends import AuthenticationBackend

class MyAuthenticationBackend(AuthenticationBackend):
    def authenticate(self, request, **credentials):
        user = super().authenticate(request, **credentials)
        if user.custom_field == True:
            return user
        else:
            return None

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何判断用户的电子邮件地址是否已使用Django,allauth,rest-auth和自定义用户进行了验证

如何自定义django rest身份验证密码重置电子邮件内容/模板

在Django中使用电子邮件和密码登录

Django自定义用户电子邮件帐户验证

Django:即使其他用户已经使用过该电子邮件地址,该用户也可以使用自定义注册表单进行注册

Django allauth自定义模板不对密码进行哈希处理

如何自定义Django Rest身份验证电子邮件上下文

Django auth_views.PasswordResetView 不发送自定义电子邮件模板

将Django URL插入自定义电子邮件模板

使用Django和django-allauth获取新用户的Twitter电子邮件地址

Django AllAuth-如何手动发送重置密码电子邮件?

Django-对管理员错误电子邮件使用其他电子邮件后端

使用电话或电子邮件登录/注册Django,allauth集成

django-allauth:在确认电子邮件之前,请勿让用户登录

如何从自定义Django视图发送密码重置邮件?

使用django-allauth无法进行电子邮件身份验证

发送带有django自定义表单的电子邮件以及附件,而无需数据库

在Django allauth中处理重复的电子邮件地址

我如何让django-allauth发送HTML电子邮件

如何覆盖django allauth电子邮件模板

在电子邮件密码身份验证中进行额外的自定义检查 (Flutter - Firebase)

在Django中访问自定义UserCreationForm的其他字段

如何自定义Firebase操作URL以进行密码重置和电子邮件验证?

Django REST序列化程序和自定义模型字段中的其他属性

如何在 Django 中使用 postgres 数据库使用(用户名、电子邮件、密码、年龄和性别)创建登录和注册表单?

Django使用带有djoser的电子邮件身份验证进行登录

Django Rest Framework 用于密码和唯一电子邮件的额外 kwargs 字段

Django自定义登录页面

通过电子邮件重置Django密码