繁体   English   中英

Django authenticate()用户返回None

[英]Django authenticate() user is returning None

我刚刚在自己的网站上实现了Facebook登录/注册。 当用户登录时,我会检查(通过AJAX调用) myModel中是否已经有她的Facebook UserID电子邮件 如果是,则用户使用我在内部为其创建的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!")

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

如果make_password是django.contrib.auth的密码,则您将密码哈希两次。 您在调用该函数时将pwd转换为哈希,但是随后将其传递给create_user ,后者再次对其进行哈希处理。 创建用户时,可以使用普通的User.objects.create() ,也可以将原始字符串“ internal”传递给create_user

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM