我正在使用djangoappengine。当我尝试创建一个新用户、对该用户进行身份验证并让他们登录时,我得到了以下错误AttributeError: 'AnonymousUser' object has no attribute 'backend'
。
我的代码很简单,看起来像这样:
user = User.objects.create_user(username, username, password)
user.set_password(password)
user.save()
user = django.contrib.auth.authenticate(username=username, password=password)
django.contrib.auth.login(request, user)
在生产环境中,我只得到以下错误,而且只是偶尔出现:
web req_create: 'AnonymousUser' object has no attribute 'backend'
Traceback (most recent call last):
File "/base/data/home/apps/s~XXXXX/1.356802202883392818/XXXX/XXX.py", line 332, in req_create
login(request, user)
File "/base/data/home/apps/s~XXXXX/1.356802202883392818/django/contrib/auth/__init__.py", line 82, in login
request.session[BACKEND_SESSION_KEY] = user.backend
AttributeError: 'AnonymousUser' object has no attribute 'backend'
我不确定,但我有一种不好的预感,这种异常是由于高复制数据存储及其最终的一致性。我认为authenticate()
保存用户值,login()
执行查询,但是用户值还没有传播到HRDS中。有人能证实这是真的吗?如果是这样,它将如何修复?
发布于 2012-02-15 07:57:03
当您保存用户时,它不会自动激活。请检查AnonymousUser的链接,该链接说明您的用户如何成为AnonymousUser
。
因此您必须将可能使您用户成为AnonymousUser
的所有项目设置为。在进行身份验证之前,请检查user.is_anonymous()
。
发布于 2012-03-08 16:51:21
也有同样的问题。但问题是用户名太长,被截断为30个字符。在这里找到答案:
Django Register Form 'AnonymousUser' object has no attribute 'backend'
发布于 2014-10-04 03:28:25
当用户未通过身份验证时,就会发生这种情况。确保您正在使用相同的字段来记录后端...例如,我使用电子邮件登录(后端使用电子邮件和密码),因此
django.contrib.auth.authenticate(username=username, password=password)
如果对我来说
django.contrib.auth.authenticate(username=email, password=password)
后端在这里:http://www.micahcarrick.com/django-email-authentication.html
https://stackoverflow.com/questions/9289391
复制相似问题