Django authenticate() user is returning None



我刚刚在我的网站上实现了Facebook登录/注册。当用户登录时,我检查(通过AJAX调用)如果我已经有她的Facebook UserID电子邮件在我的myModel。如果是,用户登录时使用make_password( password )我在内部为他们创建,否则创建用户。

我代码:

#Get Facebook detail, through AJAX
userEmail = request.POST['email']
userID = request.POST['userID']
userName = request.POST['username'].replace(" ", "")
#Check if the user already exist.
try:
   new_user = myModel.objects.get(email = userEmail, fb_id = userID)
except myModel.DoesNotExist:
   new_user = None
if new_user is not None:
    user = authenticate(username = new_user.username, password = "internal")
    if user is not None:
        login(request, user)
        return HttpResponse("User Authenticated Successfully")
    return HttpResponse("User NOT Authenticated!")
#Create and save user here...
pwd = make_password("internal")
new_user = myModel(email=userEmail, fb_id=userID, username=userName, password=pwd)
new_user.save()
#Create and save this user in Django **User** model.
created_user = User.objects.created_user(userName, userEmail, pwd)
created_user.save()
return HttpResponse("User created successfully!")

但是user总是None对于现有用户,即使我手动(硬编码)用户名和密码也有效

如果make_password是来自django.contrib的。是的,那么你对密码进行了两次散列。当你调用这个函数时,你把pwd转换成一个哈希值,然后你把它传递给create_user,它会再次哈希它。或者在创建用户时使用正常的User.objects.create(),或者将原始字符串"internal"传递给create_user

最新更新