1

我试图让用户在注册后立即自动登录。他们刚刚输入了他们想要的用户名和两个匹配的密码,我想授予对网站的访问权限,而不会有更多的摩擦。但是我当前使用身份验证的用户对象进行身份验证的视图不起作用,即视图在注册后重定向到个人资料页面,但个人资料页面@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))

你如何处理这个问题?

4

1 回答 1

0

您可以通过以下方式使其工作:

  1. 通过简单视图重定向到一个中间模板,它会在客户端设置会话cookie,您可以显示类似“注册完成。登录...”的消息
  2. 在 3-5 秒的小超时后重定向到个人资料页面。这个时候request会携带认证cookie,profile页面就可以访问了。
于 2012-09-15T15:21:18.347 回答