2013-07-08 4 views
5

मैं एक पृष्ठ बनाने का प्रयास कर रहा हूं जिसमें दो रूप शामिल हैं: पृष्ठ लोड होने पर एक दृश्यमान (एक साइनइन फॉर्म) दिखाई देता है, और यदि कोई बटन बटन (एक साइनअप फॉर्म) पर क्लिक करता है तो एक मॉडल में दिखाई देता है।दो रूपों को शामिल करने से मेरे सीएसआरएफ टोकन का उपयोग कैसे प्रभावित होगा?

मैं Django का उपयोग कर रहा हूं, और, हालांकि मैं अभी भी यह पता लगा रहा हूं कि मैं इन रूपों को कैसे संभालेगा, मेरी सबसे बड़ी चिंता यह है कि सीएसआरएफ टोकन इस सब में कैसे खेलेंगे। उदाहरण के लिए, क्या मुझे {% csrf_token %} का उपयोग केवल <form></form> टैगों में से एक के अंदर करना चाहिए, या क्या मुझे इसे दोनों में रखना चाहिए?

आगे, अगर मैं इसे दोनों रूपों में उपयोग करता हूं, तो क्या यह मेरे POSTS को किसी भी तरह से सर्वर पर प्रभावित करेगा?

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

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

आपको इसे दोनों में तब तक रखना चाहिए जब तक दोनों को 'GET' या 'POST' के माध्यम से सर्वर पक्ष पर पहुंचाया जा रहा हो और हाँ आप इसे बिना किसी समस्या के – karthikr

+0

पर रख सकते हैं। @ karthikr मैं सराहना करता हूं अगर आप इसे उत्तर के रूप में जवाब दे सकते हैं ताकि मैं इसे सही के रूप में चिह्नित कर सकूं। इसके अलावा, क्या आप शामिल कर सकते हैं कि मैं csrf टोकन का उपयोग कैसे करूं? धन्यवाद! – nmagerko

उत्तर

5

csrf_token, दोनों रूपों में रखा जाना चाहिए जब तक दोनों के रूप में सर्वर पर पहुँचा जा रहा है: वर्तमान में, मैं डेटा एक रूप में (निर्भर करता है जिस पर सबमिट बटन पर क्लिक किया जाता है) इस तरह से ले रहा हूँ और पोस्टिंग GET या POST के माध्यम से, और आप बिना किसी समस्या के दोनों रूपों के लिए csrf_token का उपयोग कर सकते हैं।

आप

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

जब आप data=form.serialize() कर की तरह कुछ कर सकते हैं, csrf टोकन स्वचालित रूप से ajax अनुरोध के data में धारावाहिक है।

कारण {% csrf_token %} कामों का कारण यह है कि सभी टोकन मान्यता के लिए जानकारी प्रदान करते हैं कि एक फॉर्म अनुरोध मान्य (अवांछित) उपयोगकर्ता सत्र से है।

संबंधित मुद्दे