Django Authenticate返回None

时间:2013-09-06 17:11:54

标签: django authentication 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!!!

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

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

7 个答案:

答案 0 :(得分:9)

在您的设置中添加这样的内容

#Authentication backends
AUTHENTICATION_BACKENDS = (
        'django.contrib.auth.backends.ModelBackend',
    )

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

#Authentication backends
AUTHENTICATION_BACKENDS = (
    'userena.backends.UserenaAuthenticationBackend',
    'guardian.backends.ObjectPermissionBackend',
    'django.contrib.auth.backends.ModelBackend',
)

答案 1 :(得分:2)

有趣的是,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)

答案 2 :(得分:1)

为什么不创建这样的用户:

user = User.objects.create_user( username="whatever", email="whatever@some.com", password="password")
user = authenticate( username="whatever",password="password")

答案 3 :(得分:1)

在settings.py中,添加

AUTH_USER_MODEL = 'office.Account'

例如,如果django app name是office,而自定义用户类是Account,那么

function trytoredirect(){
$('.divLoading').show();
  setTimeout(redirect,3000); 
// show loading in 3 secound before redirect this is example
  }

function redirect() {
    location.href = "https://www.stackoverflow.com";
}

答案 4 :(得分:1)

set_password是一种令人误解的方法,它不会将密码保存在用户表中。您需要调用user.save()才能使其正常工作

答案 5 :(得分:0)

更改为以下内容。仍然没有荣耀

email = "2@a.com"
password = "pass"
user = User.objects.create_user(email,email,password)
u = authenticate(username=email, password=password)

答案 6 :(得分:0)

还要检查您是否具有正确的用户名/密码组合。有时,通过createsuperuser命令创建的用户名不同于您通常使用的用户名。