Python 如何在运行set_unsable_password后对用户进行身份验证?
我创建了一个用户Python 如何在运行set_unsable_password后对用户进行身份验证?,python,django,Python,Django,我创建了一个用户 new_user = create_user( username=username, email=email, first_name=first_name, last_name=last_name) new_user.set_unusable_password() 但是authenticate()为该用户返回None auth_user = authenticate( username=new_user
new_user = create_user(
username=username, email=email, first_name=first_name,
last_name=last_name)
new_user.set_unusable_password()
但是authenticate()
为该用户返回None
auth_user = authenticate(
username=new_user.username, password=new_user.password)
AttributeError: "'AnonymousUser' object has no attribute 'backend'"
该用户登录失败
auth_user = authenticate(
username=new_user.username, password=new_user.password)
AttributeError: "'AnonymousUser' object has no attribute 'backend'"
如何对这些用户进行身份验证?尝试编写一个不需要密码的自定义身份验证后端 尝试: 然后,您可以简单地使用自定义身份验证功能:
auth_user = authenticate(username=new_user.username)
当用户没有密码时,您需要
验证(**凭证)
该用户
是验证给定的用户名和密码
因此,您应该只创建给定的用户名。基本上,您需要做的唯一身份验证就是检查用户是否在数据库中。但很明显,用户在数据库中。因此,您也可以通过直接设置user.backend='django.contrib.auth.backends.modelbend'
来伪造身份验证过程
然后是登录给定用户
手动登录用户时,在调用login()
之前,必须使用authenticate()
成功验证该用户authenticate()
在用户上设置一个属性,指出哪个身份验证后端成功地对该用户进行了身份验证(有关详细信息,请参阅后端文档),稍后在登录过程中需要此信息
你错过了括号。新建用户。设置不可用的密码()@BidhanBhattarai感谢
用户。后端
如果可以避免对后端进行硬编码,那就好了。并改用django.conf.settings.AUTHENTICATION\u后端