Django Rest框架附加身份验证检查
我正在使用Django Rest框架开发一个应用程序。如何在用户登录时扩展身份验证检查 例如,我需要检查登录用户的is_active和created_at属性,并根据它们的值允许或不允许登录,但只有在Django验证密码之后 我了解Django和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
谢谢 您可以扩展现有的身份验证后端,而无需重新实现所有逻辑,例如:
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',)