के साथ एएसपी.NET MVC3 में एक JSON मॉडल पोस्ट करना तो, मैं इसके साथ दीवार के खिलाफ अपने सिर को टक्कर लगी हूं, और मुझे इसके लिए कोई अच्छा स्रोत नहीं मिल रहा है। हो सकता है कि मैं भूल रहा हूं कि मॉडल बाध्यकारी सामान एमवीसी 3 में कैसे काम करता है, लेकिन यहां मैं जो करने की कोशिश कर रहा हूं: मेरे पास मॉडल के संपादन को संभालने के लिए नॉकआउट के साथ कुछ संपादक हैं। वहाँ मॉडल के लिए काफी नहीं है:एंटी-जालसाजी टोकन
public class SetupTemplate
{
public int Id { get; set; }
public string Name { get; set; }
public string Template { get; set; }
}
कार्रवाई मैं फोन करने के लिए कोशिश कर रहा हूँ के हस्ताक्षर है:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult UpdateTemplate(SetupTemplate template)
यहाँ पर एक और सवाल से, मैं इस बल्कि उपयोगी टुकड़ा उठाया पाने के लिए विरोधी जालसाजी टोकन:
window.addAntiForgeryToken = function(data) {
data.__RequestVerificationToken = $('#__AjaxAntiForgeryForm input[name=__RequestVerificationToken]').val();
return data;
};
कौन सा सब मेरे ajax के माध्यम से एक अद्यतन पोस्ट करने की कोशिश के साथ एक साथ आता है:
payload = window.addAntiForgeryToken(ko.mapping.toJS(self.data));
$.ajax({
type: "post",
url: endpoint,
data: payload,
success: function(data) {
//Handle success
}});
कौन सा Chrome डेवलपर टूल
Id:1
Name:Greeting
Template: [Template Text]
__RequestVerificationToken: [The really long anti-forgery token]
antiforgery टोकन उठाया जाता है के रूप डेटा अनुभाग में इस में परिणाम है, लेकिन अपने मॉडल रिक्त है। इसके बारे में मैंने जो अधिकांश उदाहरण देखे हैं, वे एक ही पैरामीटर का उपयोग करते हैं, न कि मॉडल के साथ।
मुझे यकीन है कि मुझे कुछ स्पष्ट याद आ रहा है, यह क्या हो सकता है पर कोई अंतर्दृष्टि?
संपादित करें: @Mark के जवाब में, यह करने के लिए कॉल को बदलने:
इस का एक अनुरोध पेलोड में$.ajax({
type: "post",
dataType: "json",
contentType: 'application/json',
url: endpoint,
data: JSON.stringify(payload),
success: function(data) {
//Do some stuff
}});
परिणाम:
{"Id":1,"Name":"Greeting","Template":"...","__RequestVerificationToken":"..."}:
और सर्वर रोधी उठा नहीं जाली टोकन पैरामीटर के साथ $.ajax()
दोनों के साथ और बिना दोनों की कोशिश की गई थी।
के रूप में काम करता है मैंने इस प्रतिक्रिया के साथ अपना प्रश्न अपडेट किया। संक्षेप में: अभी भी कोई पासा नहीं है। –
क्या यह पोस्ट http://haacked.com/archive/2011/10/10/preventing-csrf-with-ajax.aspx आपकी मदद करता है? – VJAI
और यह http://stackoverflow.com/questions/2906754/how-can-i-supply-an-antiforgerytoken-when-posting-json-data-using-ajax – VJAI