Django 在测试期间,当使用正确的用户输入进行测试时,我得到;无效凭证“;
我只使用电话号码作为登录的唯一字段。 即使提供了正确的用户输入,身份验证似乎也无法正常工作 配置身份验证后端时出错:Django 在测试期间,当使用正确的用户输入进行测试时,我得到;无效凭证“;,django,python-3.x,django-rest-framework,Django,Python 3.x,Django Rest Framework,我只使用电话号码作为登录的唯一字段。 即使提供了正确的用户输入,身份验证似乎也无法正常工作 配置身份验证后端时出错: File "C:\Users\UBITEK\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\conf\__init__.py", line 161, in __init__ raise ImproperlyConfigured("The SECRET_KEY setting must
File "C:\Users\UBITEK\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\conf\__init__.py", line 161, in __init__
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
backends.py
from django.contrib.auth.backends import ModelBackend
from .models import User
class LoginBackend(ModelBackend):
def authenticate(self, request, **kwargs):
phone_number= kwargs['phone_number']
user = User.objects.get(phone_number=phone_number)
if user:
return user
else:
return None
设置.py
from .backends import LoginBackend
from django.contrib.auth.backends import ModelBackend
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend',
'findr.backends.LoginBackend']
关于对您问题的评论,我建议您编写自己的
django
身份验证后端:
您必须告诉Django应该如何对某人进行身份验证:
- 使用
和用户名
密码
- 使用
和电话号码
密码
这必须是明确的(不要忘记将这个新的后端添加到您的
settings.py
文件!)。您能告诉我们什么不起作用吗?电话号码读对了吗?是在你试图认证的时候吗?是的。读对了..我想你写了自己的认证后端?我们能看看吗?:-)不,我没有写任何身份验证后端。如果你没有,Django不应该知道用户应该用他的电话号码进行身份验证!Django将尝试使用默认凭据进行身份验证:username
和password
。在为端点编写后端身份验证时遇到问题。你能帮忙吗?医生帮不上忙。我不会做你的工作,但我可以帮你。你面临什么问题?你已经做了什么?文档中有什么不清楚的地方?我已经对上面的代码进行了编辑,以反映更改。
from .backends import LoginBackend
from django.contrib.auth.backends import ModelBackend
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend',
'findr.backends.LoginBackend']