Django Authenticate返回None

Dav*_*ass 11 authentication django nonetype

我有以下代码片段:

user = User(username='h@h.com',email='h@h.com')
user.set_password('pass')
user.save()
u = authenticate(username='h@h.com', password='pass') #this always returns None!!!
Run Code Online (Sandbox Code Playgroud)

问题是,你总是没有.我已经在其他堆栈溢出帖子上跟踪了代码示例,并将其缩小到上面的行.

关于可能发生的事情的任何想法?

Ram*_*ast 9

在你的设置中放置这样的东西

#Authentication backends
AUTHENTICATION_BACKENDS = (
        'django.contrib.auth.backends.ModelBackend',
    )
Run Code Online (Sandbox Code Playgroud)

或者如果您使用userena作为您的帐户

#Authentication backends
AUTHENTICATION_BACKENDS = (
    'userena.backends.UserenaAuthenticationBackend',
    'guardian.backends.ObjectPermissionBackend',
    'django.contrib.auth.backends.ModelBackend',
)
Run Code Online (Sandbox Code Playgroud)


Dav*_*ass 6

有趣的是, check_password 在以下情况下返回 True:

eml = "4@a.com"
pw = "pass"
uname = 'w2'
user = User.objects.create_user(uname,eml,pw)
user.save()
log.debug("Password check passes?")
log.debug(user.check_password(pw)) # Logs True!!!
user = authenticate(username=uname, password=pw)
Run Code Online (Sandbox Code Playgroud)