में विंडोज प्रमाणीकरण और प्रपत्र प्रमाणीकरण का संकर हमारे पास एक एएसपी.नेट एमवीसी 4 इंट्रानेट एप्लिकेशन है। हम विंडोज प्रमाणीकरण का उपयोग कर रहे हैं और वह पहलू ठीक काम करता है। उपयोगकर्ता के क्रेडेंशियल्स का उपयोग किया जाता है और हम वेब ऐप से उन प्रमाणपत्रों तक पहुंच सकते हैं।एएसपी.नेट एमवीसी 4
हम वास्तव में कुछ प्रकार के हाइब्रिड मोड चाहते हैं। हम ब्राउज़र से उपयोगकर्ता के प्रमाण पत्र प्राप्त करना चाहते हैं, लेकिन हम यह भी सत्यापित करना चाहते हैं कि उपयोगकर्ता हमारे एप्लिकेशन के डेटाबेस में है। यदि उपयोगकर्ता डेटाबेस में है, तो वे अभी भी जारी रख सकते हैं। यदि वे नहीं हैं, तो हम उन्हें वैकल्पिक क्रेडेंशियल मांगने वाले पृष्ठ पर रीडायरेक्ट करना चाहते हैं। अब मैं क्या कर रहा हूं, Global.asax.cs
में, मुझे Application_AuthenticateRequest
विधि मिली है और मैं यह देखने के लिए जांच रहा हूं कि उपयोगकर्ता प्रमाणीकृत है या नहीं। यदि वे हैं और उनकी कुकी जानकारी इस तथ्य को प्रतिबिंबित नहीं करती है कि वे सिस्टम में लॉग इन हैं, तो मैं उन्हें लॉग इन करता हूं और उपयोगकर्ता के बारे में जानकारी के साथ कुछ कुकी सेट करता हूं। अगर वे प्रमाणीकृत नहीं हैं, तो मैं उन्हें लॉगिन पृष्ठ पर रीडायरेक्ट करता हूं। हम कंपनी नीति से जुड़े कारणों के लिए एडी भूमिकाओं का उपयोग नहीं कर सकते हैं, इसलिए हमें अतिरिक्त प्रमाणीकरण के लिए डेटाबेस का उपयोग करने की आवश्यकता है।
मुझे लगता है कि Application_AuthenticateRequest
ऐसा करने का स्थान नहीं है, लेकिन शायद यह है। लेकिन हमें मूल रूप से प्रमाणीकरण के अनुरोधों को फ़िल्टर करने के लिए एक जगह की आवश्यकता है। लेकिन इसके अतिरिक्त यह कार्यान्वयन मुझे दूसरे मुद्दे पर ले जाता है:
हमारे पास हमारे ऐप में कुछ यूआरएल हैं जो अज्ञात पहुंच की अनुमति देते हैं। मैंने इनके लिए web.config पर <location>
टैग जोड़े हैं। समस्या यह है कि, जब अनाम कॉल इन में किए जाते हैं, तो यह Application_AuthenticateRequest
पर जाता है और उपयोगकर्ता को डीबी में लॉग करने का प्रयास करता है। अब, मैं इन यूआरएल को संभालने के लिए Application_AuthenticateRequest
में कोड जोड़ सकता हूं और यह वर्तमान में मेरी योजना है, लेकिन यदि मैं लिख रहा हूं और Application_AuthenticateRequest
ऐसा करने की जगह नहीं है, तो मैं इसे बाद में अब समझूंगा।
मैं इस समाधान पसंद है, लेकिन मैं अभी भी 401 त्रुटि पर मिलता है नियंत्रक विधियों जो किसी को भी अनुमति देनी चाहिए। इस विशेष मामले में, मैं इसे सी # 'HttpWebRequest.GetResponse() 'कॉल से कॉल कर रहा हूं। 'DebugController.FlushCaches()' में [AllowAnonymous] है और 'web.config' में मेरे पास' डीबग/फ्लश कैश 'के लिए' 'टैग है जिसमें '<उपयोगकर्ताओं को =" * "/>' अनुमति है। लेकिन मेरी जब 'HttpWebRequest' यह कहता है, मैं एक 401 –
Pete
उपयोग इसे अपने टैग के रूप में: ' <स्थान पथ = "डीबग/FlushCaches"> <प्राधिकरण> <अनुमति देने के उपयोगकर्ताओं = "*"/> प्राधिकरण> ' –
ataravati
http://stackoverflow.com/questions/15087755/use-anonymous-authentication-in-mvc4-on-single-controller-when-the-whole-applica – ataravati