正如标题所述,我正在尝试验证一个没有密码的用户。我已经用这个:django authentication without a password来解决我的应用程序(在Django 2.0上)的问题,但是我想在另一个应用程序中做同样的事情,但它在Django 2.1上。当我执行相同的实现时,我的自定义身份验证函数从未被调用。因此它不起作用
auth_backend.py中的当前设置:
from django.contrib.auth.backends import ModelBackend
from django.contrib.auth.models import User
class PasswordlessAuthBackend(ModelBackend):
"""Log in to Django without providing a password.
"""
def authenticate(self, username=None):
try:
return User.objects.get(username=username)
except User.DoesNotExist:
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
在settings.py中设置:
AUTHENTICATION_BACKENDS = [
# auth_backend.py implementing Class PasswordlessAuthBackend inside yourapp folder
'yourapp.auth_backend.PasswordlessAuthBackend',
# Default authentication of Django
'django.contrib.auth.backends.ModelBackend',
]
但当我尝试在我的观点
user = authenticate(username=user.username)
它永远不会影响我的自定义身份验证方法。感谢您的任何帮助
您在settings.py中的身份验证后端路径无效
应该是
所以我通过这里的文档解决了我自己的问题:https://docs.djangoproject.com/en/2.1/topics/auth/customizing/
我所要做的就是从auth_backend.py中的authetnicate函数
到
在文档中,它说您还可以将类delcaration更改为不包含ModelBackend,但这两种方式都有效
您可以尝试避免使用默认后端吗
改变
到
相关问题 更多 >
编程相关推荐