Django auth后端和自动登录

时间:2012-09-15 15:01:57

标签: django authentication login registration backend

我正在尝试让用户在注册后自动登录。他们刚刚输入了他们想要的用户名和两个匹配的密码,我想授予访问该网站的权利,而不再有任何摩擦。但我当前使用身份验证后使用authenticate的用户对象登录的视图不起作用,即视图在注册后重定向到配置文件页面,但配置文件页面被@login_required装饰器保护,因此重定向因为登录是不成功。我已经广泛调试并环顾四周。

我已经尝试了所有我能想到的东西,而不是诉诸第三方注册应用程序。人们已经建议后端或其他东西存在问题/特性,但我无法理解为什么我无法在一个视图中注册,授权和登录。

views.py(相关部分)

@login_required
def user(request, user_id):
    profile_user = User.objects.get(id=user_id) 
    context = RequestContext(request)    
    context['profile_user'] = profile_user
    return render_to_response('profile.html', context)


def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            new_user = form.save()
            new_user = authenticate(username = request.POST['username'],
                                    password = request.POST['password1'])
            if new_user is not None:
                login(request, new_user)
                context = RequestContext(request)    
                context['user_id'] = new_user.id
                context['new_user'] = new_user
                url = '/user/%s/' % new_user.id      
                return HttpResponseRedirect(url)
    else:
        form = UserCreationForm()
    return render_to_response("registration/register.html", {'form': form},
                              context_instance=RequestContext(request))

你是如何处理的?

1 个答案:

答案 0 :(得分:0)

你可以通过以下方式使其发挥作用:

  1. 通过简单视图重定向到中间模板,它将在客户端设置会话cookie,您可以显示“注册已完成。登录...”等消息。
  2. 在3-5秒超时后重定向到个人资料页面。这一次,请求将携带身份验证cookie,配置文件页面将是可访问的。