1

ユーザーが登録するとすぐに自動的にログインしようとしています。彼らは目的のユーザー名と 2 つの一致するパスワードを入力したところです。サイトへのアクセスをこれ以上摩擦なく許可したいと思います。しかし、認証の後に認証のユーザー オブジェクトを使用したログインが続く私の現在のビューは機能しません。つまり、ビューは登録後にプロファイル ページにリダイレクトされますが、プロファイル ページは@login_requiredデコレータで保護されているため、ログインが失敗したためにリダイレクトされます。私は広くデバッグして見回しました。

サードパーティの登録アプリに頼ること以外は、考えられることはすべて試しました。人々は、バックエンドなどに問題/特異性があることを示唆していますが、1 つのビューで登録、認証、およびログインできない理由がわかりません。

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 秒のタイムアウトの後、プロファイル ページにリダイレクトします。今回は、リクエストに認証 Cookie が含まれ、プロフィール ページにアクセスできるようになります。
于 2012-09-15T15:21:18.347 に答える