मेरा एक सह कार्यकर्ता और मैं इस को देखा और हम एक अच्छा समाधान पाया विश्वास करते हैं।
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class HttpsRequiredAttribute : RequireHttpsAttribute
{
protected override void HandleNonHttpsRequest(AuthorizationContext filterContext)
{
// Check to see if we're secure
string requirestr = ConfigurationManager.AppSettings["RequireHttps"];
bool require;
if (bool.TryParse(requirestr, out require) && require)
base.HandleNonHttpsRequest(filterContext);
}
}
यह RequireHttpsAttribute बढ़ा कर काम करता है, और के रूप में AttributeTargets ने संकेत दिया, एक वर्ग या विधि के लिए लागू किया जा सकता: यहाँ है कि हम क्या के साथ आया है। हम फिर RequHttpsAttribute में वर्चुअल फ़ंक्शन को ओवरराइड करते हैं। विधि क्या है "WebHconfps" नामक कुंजी के लिए Web.config फ़ाइल की जांच करें। अगर यह नहीं मिल रहा है, या यह एक अवैध बूल मान है (जो bool.tryparse जांच करता है), तो उसे Https की आवश्यकता नहीं है। यदि यह मान को सत्य के रूप में पाता है, तो इसके लिए HTTPS की आवश्यकता होती है।
आपको इस एक्सटेंशन का उपयोग करते हैं, तो आप अपने Web.config कहा जाता है में एक महत्वपूर्ण जोड़ने के लिए "RequireHttps," इसलिए की तरह की आवश्यकता होगी: <add key="RequireHttps" value="true"/>
फिर आप बंद आवश्यकता HTTPS के लिए जब आप के लिए इस चर बदलकर बदल सकते हैं डीबगिंग कर रहे हैं, या अपनी वेब.कॉन्फिग फ़ाइल को बदलकर जहां भी आपकी साइट तैनात की जा सकती है।
कूल धन्यवाद बर्ट्रेंड! एमवीसी जीवन को आसान बना रहा है :) –
यह ध्यान देने योग्य है कि साइन इन करने के बाद, आपके प्रश्न के अनुसार, आपको उन्हें सीधे पृष्ठ का उपयोग करके अगले पृष्ठ पर रीडायरेक्ट करना चाहिए। इस तरह वे पूरे समय https पर अटक नहीं जाते हैं। – Jab
@jab हॉट स्पष्ट रूप से http का उपयोग कर अगले पृष्ठ पर रीडायरेक्ट करने के लिए? क्या यह RedirectToAction() के साथ संभव है? – pramodtech