I f पुनर्निर्देशित नियंत्रक उसी baseController
से प्राप्त होता है जहां हम OnActionExecuting
विधि कारण रिकर्सिव लूप को ओवरराइड करते हैं। मान लीजिए कि हम इसे खाता नियंत्रक की लॉगिन कार्रवाई के लिए रीडायरेक्ट करते हैं, तो लॉगिन कार्रवाई OnActionExecuting
विधि को कॉल करेगी और उसी लॉगिन कार्रवाई को बार-बार पर रीडायरेक्ट कर दी जाएगी ... इसलिए हमें मौसम जांचने के लिए OnActionExecuting
विधि में चेक लागू करना चाहिए, अनुरोध अनुरोध से है यदि एक ही नियंत्रक है तो इसे फिर से लॉगिन कार्रवाई को रीडायरेक्ट न करें। यहां कोड है:
संरक्षित ओवरराइड।
void OnActionExecuting(ActionExecutingContext filterContext)
{
try
{
some condition ...
}
catch
{
if (filterContext.Controller.GetType() != typeof(AccountController))
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Account" }, { "action", "Login" } });
}
}
}
`नई RedirectResult (यूआरएल) के बजाय
स्रोत
2016-07-01 06:36:29
' आप भी नए RedirectToAction (स्ट्रिंग कार्रवाई, स्ट्रिंग नियंत्रक) 'का उपयोग' सकता है। आपके उत्तर पोस्ट करने के बाद यह एमवीसी में जोड़ा जा सकता है। आपका समाधान मुझे वैसे भी सही रास्ते पर डाल दिया। – Manfred
+1000 धन्यवाद! – IamStalker
यह निष्पादित नहीं करेगा कि आपके वर्तमान कार्य में क्या है? क्या यह सुरक्षा दोष नहीं होगा? आइए मान लें कि एक ऐसी क्रिया है जो उपयोगकर्ता द्वारा/व्यवस्थापक/हटाएं/4 द्वारा रूट की गई है। यदि आपकी हालत जांचना है तो आप एक व्यवस्थापक हैं, और अगर नहीं तो पुनर्निर्देशित करें। उपयोगकर्ता 4 हटा दिया जाएगा, भले ही आप रीडायरेक्ट समाप्त हो जाएं, सही? – Pluc