我有以下代码段:
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!!!
问题是,你总是没有。我已经在其他堆栈溢出帖子上跟踪了代码示例,并将其缩小到上面的行。
关于可能发生的事情的任何想法?
答案 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命令创建的用户名不同于您通常使用的用户名。