Django Rest框架附加身份验证检查

Django Rest框架附加身份验证检查,django,authentication,django-rest-framework,Django,Authentication,Django Rest Framework,我正在使用Django Rest框架开发一个应用程序。如何在用户登录时扩展身份验证检查 例如,我需要检查登录用户的is_active和created_at属性,并根据它们的值允许或不允许登录,但只有在Django验证密码之后 我了解Django和Django Rest框架自定义身份验证 问题是,这需要我重新实现内置的身份验证检查。我想在上面加上支票 谢谢 您可以扩展现有的身份验证后端,而无需重新实现所有逻辑,例如: from django.contrib.auth.backends impo

我正在使用Django Rest框架开发一个应用程序。如何在用户登录时扩展身份验证检查

例如,我需要检查登录用户的is_active和created_at属性,并根据它们的值允许或不允许登录,但只有在Django验证密码之后

我了解Django和Django Rest框架自定义身份验证

问题是,这需要我重新实现内置的身份验证检查。我想在上面加上支票


谢谢

您可以扩展现有的身份验证后端,而无需重新实现所有逻辑,例如:

from django.contrib.auth.backends import ModelBackend

class MyModelBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None):
        user = super().authenticate(request, username=None, password=None)
        if user and not user.is_active:
            return None
        return user
不要忘记更新
设置.py
以使用自定义身份验证后端:

AUTHENTICATION_BACKENDS = ['myapp.backends.MyModelBackend']

您可以扩展现有的身份验证后端,而无需重新实现所有逻辑,例如:

from django.contrib.auth.backends import ModelBackend

class MyModelBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None):
        user = super().authenticate(request, username=None, password=None)
        if user and not user.is_active:
            return None
        return user
不要忘记更新
设置.py
以使用自定义身份验证后端:

AUTHENTICATION_BACKENDS = ['myapp.backends.MyModelBackend']

谢谢工作完美无瑕。如果有人需要,您需要在Django settings.py中注册后端(我将其放在backends文件夹中):AUTHENTICATION_backends=('myapp.backends.mymodelbend',)谢谢!工作完美无瑕。如果有人需要,您需要在Django settings.py(我把它放在backends文件夹中)中注册后端:AUTHENTICATION_backends=('myapp.backends.mymodelbend',)