我们有一个返回用户对象的自定义后端。
在管理员登录视图中,我们代表用户登录:
user.backend = 'django.contrib.auth.backends.ModelBackend'
login(request, user)
return redirect('/')
登录后会发生以下情况:
[05/Dec/2013 13:23:04] "POST /adminlogin/ HTTP/1.1" 302 0
[05/Dec/2013 13:23:04] "GET / HTTP/1.1" 302 0
[05/Dec/2013 13:23:04] "GET /accounts/login/?next=/ HTTP/1.1" 200 892
这在我们更新Django之前曾经工作过,我们认为它可能与this ticket有关,但无法弄明白。
答案 0 :(得分:0)
您先打电话给authenticate吗?来自文档中的here:
当您手动记录用户时,必须在致电
authenticate()
之前致电login()
。authenticate()
在User
上设置了一个属性,指出哪个身份验证后端成功验证了该用户(有关详细信息,请参阅后端文档),稍后在登录过程中需要此信息。
根据您的要求,您可能还需要提供自定义身份验证后端,并将其添加到settings.py中的AUTHENTICATION_BACKENDS
。