समाप्त हो रही एक वेब पेज में हम एक हाइपरलिंक (GET) उपयोगकर्ता को प्रमाणित करने के पर क्लिक कर सकते है कि प्रदान करते हैं:ASP.NET MVC - ValidateAntiForgeryToken
@Html.ActionLink("Please Login", "MyMethod", "MyController")
यह निम्न नियंत्रक विधि है जो एक दृश्य रिटर्न का मानचित्रण:
[RequireHttps]
public ActionResult MyMethod()
{
return this.View(new MyModel());
}
इस दृश्य में वह फॉर्म शामिल है जिसमें उपयोगकर्ता अपने प्रमाण-पत्र प्रदान करता है; फॉर्म में आवश्यक एंटीफोर्गेरी टोकन शामिल है।
उपयोगकर्ता प्रपत्र सबमिट करते हैं, तो निम्न नियंत्रक विधि कहा जाता है:
[HttpPost]
[RequireHttps]
[ValidateAntiForgeryToken]
public ActionResult MyMethod(MyModel model)
{
// my logic
}
यह पूरी तरह से अच्छी तरह से काम करता है, समय की सबसे ...
हालांकि, अगर उपयोगकर्ता अपने ब्राउज़र खुला छोड़ देता है प्रपत्र +०१२३५१६४१० में लॉग-लोड करने के लिए
- क्लिक्स हाइपरलिंक (जीईटी) पर: समय की एक "महत्वपूर्ण" अवधि के लिए और उसके बाद जल्दी जल्दी में निम्न चरणों प्रदर्शन
- प्रपत्र पूर्ण करता है और प्रस्तुत
वे उन्हें सूचित किया कि विरोधी जालसाजी टोकन था या या तो प्रदान नहीं की अवैध था एक अपवाद मिलता है।
मुझे समझ में नहीं आता कि यह क्यों मामला है: ब्राउजर निष्क्रिय होने के बाद व्यू (फॉर्म युक्त) बनाया गया है और इसलिए विरोधी जालसाजी टोकन सभी को "ताजा" होना चाहिए। हालांकि, इस डिजाइन के साथ कुछ स्पष्ट रूप से गलत है, लेकिन मुझे यकीन नहीं है कि इसे कैसे सुधारना है।
यदि आपके पास कोई सुझाव है तो अग्रिम धन्यवाद।
Griff
विरोधी जालसाजी मैं सिर्फ है कि मेरे ऐप कुछ वर्षों के लिए इस समस्या का अनुभव किया है उल्लेख करना चाहते हैं पर समाप्ति बढ़ाएँ और मैं एक समाधान है अच्छा लगेगा। मैंने सभी मानक मशीन कुंजी फिक्सेस की कोशिश की। – Jonathan
स्रोत में उन आस्तीन और गोता लगाने के लिए रोल। मैं पंप आदमी हूँ। – Nick
एक [आलेख] है (http://stackoverflow.com/questions/5767768/troubleshooting-anti-forgery-token-problems?rq=1) जो टोकन के लिए सत्यापन चरणों का विवरण देता है। एक चरण संदर्भ के उपयोगकर्ता के खिलाफ मान्य करना है - यह सुनिश्चित नहीं है कि वह शायद चरण से बाहर हो गया हो। किसी भी तरह से, समाधान अस्पष्ट बनी हुई है। – DrGriff