2013-07-08 2 views
5

ページが読み込まれたときに表示されるフォーム(サインインフォーム)と、ユーザーがボタン(サインアップフォーム)をクリックするとモーダルに表示されるフォームの2つのフォームを含むページを作成しようとしています。2つのフォームの組み込みはCSRFトークンの使用にどのように影響しますか?

私はDjangoを使用していますが、私はまだこれらのフォームをどのように処理するかを考えていますが、私の最大の関心事は、CSRFトークンがこのすべてにどのように役立つかです。たとえば、<form></form>タグのうちの1つの中に{% csrf_token %}を使用するのはなぜですか、それとも両方に入れるべきですか?

また、両方の形式で使用すると、サーバーへのPOSTSには何らかの影響がありますか?

var data={ 
    'username':$('#username').val(), 
    'password':$('#password').val(), 
    'csrfmiddlewaretoken': '{{ csrf_token }}' 
} 

$.post("/", signin_data); 
+1

サーバー側で 'GET'または' POST'で両方にアクセスしている間は、両方に配置する必要があります。そして、両方とも問題なしで配置することができます。 – karthikr

+0

Perfect。 @karthikr答えとしてこれに答えることができれば、私はそれを正しいものとしてマークすることができて感謝します。さらに、どのように私がcsrfトークンにアクセスするかを含めることができますか?ありがとう! – nmagerko

答えて

5

csrf_tokenがいる限り、両方のように、サーバー上でアクセスされている、フォームの両方に配置する必要があります:現在、私はこのように(どのボタンがクリックされた提出によって)形式でデータを取ってポスティングしていますあなたはまたはPOST経由であり、はいのどちらでも問題なく両方のフォームに同じcsrf_tokenを使用してください。

あなたはcsrfトークンは自動的にAJAX要求のdataで連載され、

<form action="." >{% csrf_token %} 
    {{form1.as_p}} 
</form> 

あなたがdata=form.serialize()を行う

ような何かを行うことができます。

{% csrf_token %}が複数ある理由は、フォーム要求が有効な(改ざんされていない)ユーザーセッションからのものであることを検証するための情報を提供するためです。

関連する問題