मैं एएसपीनेट एमवीसी पेज में अपने कुछ कार्यों पर प्रमाणीकरण विशेषता का उपयोग कर रहा हूं ताकि लोगों को लॉगिन स्क्रीन पर संदर्भित किया जा सके यदि उन्होंने प्रमाणित नहीं किया है। मेरी समस्या उन्हें लॉग इन करने के बाद संदर्भ पृष्ठ पर लौट रही है। मैं केवल रेफरिंग एक्शन और रेफरिंग कंट्रोलर का ट्रैक रख रहा था, लेकिन जब मुझे कुछ पैरामीटर ट्रैक करने की भी आवश्यकता होती है तो यह समस्याग्रस्त हो जाता है। क्या चाल में कुछ निफ्टी बनाया गया है जिसके बारे में मुझे नहीं पता?पृष्ठ पर वापस लौटें
उत्तर
मामले में आप FormsAuthentication, जब ASP.NET प्रवेश पृष्ठ पर एक रीडायरेक्ट का उपयोग कर रहे है, URL कुछ ऐसा दिखता है:
http://www.mysite.com/Login?ReturnUrl=/Something
लॉगिन फ़ॉर्म की एक्शन विशेषता में वही रिटर्न यूआरएल पैरामीटर होना चाहिए (या तो छुपा इनपुट या यूआरएल के हिस्से के रूप में) ताकि फॉर्म प्रमाणीकरण इसे उठा सके और रीडायरेक्ट कर सके, उदाहरण के लिए
<form action="Login?ReturnUrl=<%=Html.AttributeEncode(Request.QueryString["ReturnUrl"]) %>"></form>
या
<form><input type="hidden" name="ReturnUrl" id="ReturnUrl" value="<%=Html.AttributeEncode(Request.QueryString["ReturnUrl"])"%> /></form>
जो परिणाम मैंने प्राप्त करने के लिए किया वह शायद अधिक हो सकता है, और मैं कुछ अन्य तरीकों को भी देखना चाहता हूं। हालांकि, मेरा कोड यहाँ है।
कृपया ध्यान दें कि यह संदर्भ के लिए मॉक का उपयोग कर रहा है ... और, मैंने अभी तक क्वेरीस्ट्रिंग के साथ कुछ भी नहीं किया है (मेरे मार्गों में कोई क्वेरीस्ट्रिंग नहीं है)।
var urlReferrer = Request.UrlReferrer;
if (urlReferrer != null)
{
var url = "~" + Server.UrlDecode(urlReferrer.PathAndQuery);
// get routecollection
var routeCollection = new RouteCollection();
GlobalApplication.RegisterRoutes(routeCollection);
// mcok context
var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
context.Expect(ctx => ctx.Request).Returns(request.Object);
// mock request
// TODO: convert querystring to namevaluecollection
// now it's just stripped
if (url.IndexOf('?') > 0)
{
url = url.Substring(0, url.IndexOf('?'));
}
var mock = Mock.Get(context.Object.Request);
// TODO: insert namevaluecollection of querystring
mock.Expect(req => req.QueryString).Returns(new NameValueCollection());
mock.Expect(req => req.AppRelativeCurrentExecutionFilePath).Returns(url);
mock.Expect(req => req.PathInfo).Returns(string.Empty);
// get routedata with mocked context
var routeData = routeCollection.GetRouteData(context.Object);
var values = routeData.Values;
return RedirectToAction(routeData.Values["action"].ToString(), values);
}
जैसा कि मैंने कहा, यह हो सकता है थोड़ा overcomplicated :)
तुम हमेशा सुनिश्चित करना चाहिए कि संदर्भ देने वाला URL अपने डोमेन और एक सुखद स्ट्रिंग है कि वे से आ रहा है के भीतर है। अन्यथा इसमें फ्लैश या अन्य क्लाइंट साइड टेक्नोलॉजीज के साथ प्रतिक्रिया विभाजन या अन्य हमलों, ज्ञात और अज्ञात जैसी चीजों को करने की क्षमता है।
HTTP रेफरर उपयोगकर्ता इनपुट है, और इसे किसी अन्य की तरह सत्यापित किया जाना चाहिए।
- 1. ActionResult पृष्ठ पर वापस लौटें जो इसे
- 2. Django में रीडायरेक्ट/उसी (पिछले) पृष्ठ पर वापस लौटें?
- 3. UINavigationController पहले दृश्य पर वापस लौटें
- 4. गिट कुछ प्रतिबद्धता पर वापस लौटें
- 5. क्यों एक गणक वापस लौटें?
- 6. सी ++ में "यह" वापस लौटें?
- 7. पिछले पृष्ठ पर वापस जाएं
- 8. पिछला पृष्ठ पर वापस जाएं
- 9. कमांड लाइन से पिछली कॉन्फ़िगरेशन पर वापस लौटें?
- 10. किसी अन्य गतिविधि से मुख्य गतिविधि पर वापस लौटें
- 11. लॉगिन (रेल) के बाद उपयोगकर्ता को पिछले पृष्ठ पर लौटें
- 12. पेपैल - यूआरएल पृष्ठ और चर लौटें
- 13. वापस बटन रीफ्रेश पृष्ठ
- 14. पृष्ठ आंशिक पोस्ट वापस
- 15. एंड्रॉइड - कॉलिंग पर लौटें गतिविधि
- 16. जीआईटी मेरे मामले में वापस लौटें (परिवर्तन रखें)
- 17. "चयन शीर्ष एन" क्वेरी में अनलॉक पंक्तियों को वापस लौटें
- 18. बाएं बाहरी प्राथमिक तालिका से सभी रिकॉर्ड्स वापस नहीं लौटें
- 19. django, फॉर्म POST सबमिट करने के बाद पिछले पृष्ठ पर लौटें
- 20. खाली jQuery चयनकर्ता ऐरे पर "सही" लौटें?
- 21. jquery remove() पृष्ठ के शीर्ष पर वापस कूदता है
- 22. Mercurial - पुराने संस्करण पर वापस लौटें और वहां से जारी रखें
- 23. एंड्रॉइड: कॉलिंग के बिना पिछली गतिविधि पर लौटें()
- 24. CursorAdapter.get से लौटें ऑब्जेक्ट()
- 25. Grails: 404 लौटें और अमान्य आईडी
- 26. संपादन पृष्ठ से उपयोगकर्ताओं को पुनर्निर्देशित करने के लिए पृष्ठ पर वापस
- 27. गुमनाम प्रकार के परिणाम लौटें?
- 28. Android में पूर्ण कार्रवाई के बाद गतिविधि पर लौटें?
- 29. सबसे अच्छा लौटें tictactoe
- 30. jQuery.draggable() - बटन पर वापस जाएं
बस एक अतिरिक्त टिप्पणी के रूप में, मैं कुछ रूटडेटा के मानों को संशोधित करने के लिए ऊपर दिए गए कोड का भी उपयोग करता हूं। – Casper