【发布时间】:2015-11-28 22:19:20
【问题描述】:
我有一个基于 AbstractUser 的自定义用户模型,并且我使用自定义 UserManager,我不知道是否需要做任何特别的事情才能使身份验证工作。我知道用户在数据库中,因为我可以执行 objects.get(username, password) 并且它会返回对象。
class PassThroughFarmerManager(PassThroughManagerMixin, UserManager):
use_in_migrations = False
class Farmer(FarmStateble, MapPointable, LastRequestStorable, AbstractUser):
last_irrigation_cycle = models.DateTimeField(auto_now_add=False, auto_now=False, null = True, blank=True)
objects = PassThroughFarmerManager.for_queryset_class(FarmerQuerySet)()
这是我的控制台输出的示例,
>>> models.Farmer.objects.get(username='901e2ac5-9324-11e5-81bf-c42c0323e33a').password
u'1223'
>>> u = authenticate(username = '901e2ac5-9324-11e5-81bf-c42c0323e33a', password = '1223')
>>> u
>>> type(u)
<type 'NoneType'>
【问题讨论】:
-
创建用户时是否正确散列密码,例如通过致电
user.set_password('new password')?如果您使用get()获取用户,它会显示什么?如果它显示未加密的密码,例如'1223',那你就做错了。 -
@Alasdair 我正在通过 objects.create(username, password) 创建用户,下班回家后我得试试你说的内容