2017-01-11 8 views
0

私が問題を理解しても、これを解決する方法がわかりません。私はユーザーが電子メールを変更できるエンドポイントを持っているdjango powered apiを持っています。ログされたユーザAがが既に存在する場合、電子メールを入力した場合、ログされたユーザAが既に存在するユーザBオブジェクトに対応するパスワードを入力したかどうか(すなわち、別の古いアカウントを所有しているかどうか)をチェックする。そのような場合は、実際のユーザーAをログアウトして、既存のBアカウントに再度ログインする必要があります。ログアウトログイン後にDjango csrfが失敗する新規ユーザ

... 
if User.objects.filter(email=email).exists(): 
    # If the email already belongs to another account 
    user = authenticate(username=email, password=password) 
    if user is not None: 
     # The user is the owner of the existing account, he has the password 
     # Get already existing client object 
     client_existing_user_obj = Client.objects.get(user=user) 

     # get clients actual cart 
     actual_cart = client.cart 
     # update existing clients cart with newly created cart 
     client_existing_user_obj.cart = actual_cart 

     # logout user with the old email, login already existing user 
     logout(request) 
     login(request, user) 

     ... 

エンドポイントが正常に動作しますが、それはしかし、200を返し、次のポストは、& PUT要求は403に答える - 「詳細」:「CSRFは失敗しました:CSRFトークン欠落または不適切な。」

どうすればこの問題を解決できますか?どんな助言も役に立ちます。

答えて

1

Django rotates the CSRF tokenユーザーがログインすると、セキュリティ上の措置です。

さらにPOST/PUTリクエストを送信する前に、ログイン後にトークンをリフレッシュする必要があります(ページを更新するなど)。

関連する問題