使用django-socialregistration,出现以下错误:
'AnonymousUser' object has no attribute 'backend'
如何,
跟踪点:
path/to_file/socialregistration/views.py in post
128. self.login(request, user)
有人知道,出了什么问题吗?
答案 0 :(得分:8)
哦,我曾经一直得到这个错误,基本上你是在打电话
self.login(request, user)
不打电话
authenticate(username=user, password=pwd)
第一
当你致电authenticate
时,django会为用户设置后端属性,并注明要使用哪个后端,详情请见此处
https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.authenticate
答案 1 :(得分:1)
我为新注册的用户犯了同样的错误。
def attempt_login(self, email, password):
user = authenticate(username=email, password=password)
login(self.request, user)
return user
我检查了数据库,注册后创建了用户,但是这个错误仍然存在。
我发现 - 用户登录(电子邮件)超过30个字符,表单字段没有验证。数据库中的用户名为get truncated,因此对于不存在的登录名称进行了身份验证。
254 - 字符是建议的电子邮件字段长度。
答案 2 :(得分:1)
我刚收到此错误并发现此帖子。我的解决方案是在注册过程中。当用户注册时,我的api和序列化程序没有对密码进行哈希处理。所以在api_view中我不得不像这样手动哈希密码..
from django.contrib.auth.hashers import make_password
# In the register api..
@ensure_csrf_cookie
@api_view(['POST'])
def register_api(request):
# Anywhere before the serializer
request.DATA['password'] = make_password(request.DATA['password'])
# Then the serializer
serializer = RegisterSerializer(data=request.DATA)
# ... etc.. Note that if you want to login after register you will have
# to store the initial password is some buffer because.. authentication
# the none hashed version.. then
authenticate(username=request.DATA['username'], password=someBuffer)
希望有人帮助..