2012-12-05 18 views
5

मेरे पास एक वेबसाइट का दो भाग हैं जिन पर मैं काम कर रहा हूं: वह जो सामान्य रूप प्रमाणीकरण का उपयोग करता है और दूसरा जो एचएमएसी-आधारित प्रमाणीकरण का उपयोग करता है। फॉर्म आधारित एक सामान्य के रूप में काम करता है (कस्टम सदस्यता प्रदाता का उपयोग करने के अलावा)।विभिन्न क्षेत्रों के लिए अलग प्रमाणीकरण मोड

सबसे निराशाजनक बात यह है कि डिफ़ॉल्ट रूप से, यदि कोई फॉर्म प्रमाणीकरण का उपयोग करने का निर्णय लेता है तो यह प्रमाणीकरण टैग के तहत रूट Web.config में निर्दिष्ट loginUrl में सभी 401 प्रतिक्रियाओं को पुनर्निर्देशित करता है। मेरी साइट के एचएमएसी भाग के लिए इसे बंद करने के प्रयास में मैंने एक अलग क्षेत्र बनाया है जो कि नियंत्रक रहते हैं। हालांकि, कोई फर्क नहीं पड़ता कि मैंने <authentication mode="None"></authentication> टैग रखा है (चाहे वह क्षेत्र/दृश्य वेब.कॉन्फिग में हो, एक Web.config मैंने क्षेत्र फ़ोल्डर में रखा है, या रूट Web.config में किसी स्थान टैग के अंतर्गत रखा है (ऐसा करने से वास्तव में उस टैग के बारे में कोई त्रुटि नहीं होती है)) मैं यह बात नहीं कर सकता कि यह सब कुछ 401s को रीडायरेक्ट करना बंद कर दे loginUrl।

किसी भी सहायता की बहुत सराहना की जाएगी क्योंकि इससे मुझे अपने बालों को फाड़ने में मदद मिल रही है।

वैसे, इस सवाल से कम से कम 2times को बिना किसी (व्यवहार्य) प्रतिक्रियाओं के विभिन्न तरीकों से पूछा गया है। जबकि मेरा प्रमाणीकरण मोड को किसी भी पर सेट करने पर केंद्रित नहीं है, वहीं आमतौर पर पथों के लिए भूमिकाओं को बदलने पर ध्यान केंद्रित किया जाता है (जो मेरी राय में प्रत्येक विधि पर [Authorize(Roles="role1,role2,role3")] विशेषता के साथ करना आसान है) जो मेरा प्रश्न थोड़ा अलग बनाता है। यदि यह असंभव है, तो कृपया मुझे बताएं ताकि मैं ऐसा करने का बेहतर तरीका समझ सकूं।

उत्तर

9

authentication Element (ASP.NET Settings Schema) केवल आवेदन स्तर पर मान्य है। आपके पास एक ही एप्लिकेशन में अलग प्रमाणीकरण मोड नहीं हो सकते हैं।

हालांकि, आप एक विशिष्ट क्षेत्र में location Element (ASP.NET Settings Schema) निर्दिष्ट कर सकते हैं और इसमें authorization Element (ASP.NET Settings Schema) निर्दिष्ट कर सकते हैं जो अज्ञात उपयोगकर्ताओं को अनुमति देता है। आप एप्लिकेशन की एक बाल निर्देशिका के तहत web.config फ़ाइल में प्राधिकरण तत्व भी डाल सकते हैं।

दो अलग प्रमाणीकरण योजनाओं का उपयोग करने के लिए, आपको उस क्षेत्र को एक अलग एप्लिकेशन में परिवर्तित करना होगा। यदि आप चाहें तो यह अभी भी माता-पिता के आवेदन का बच्चा हो सकता है, लेकिन कुछ चेतावनी हैं। बेशक, चेतावनी में से एक यह है कि सत्र राज्य दो अनुप्रयोगों के बीच साझा नहीं किया जाएगा।

इसके अलावा, Nested ASP.NET 'application' within IIS inheriting parent config values? प्रश्न और ASP.NET Configuration File Hierarchy and Inheritance देखें।

+0

क्या यह अभी भी दिसंबर 2013 में एमवीसी 5 की उम्र में मामला है? – Kjensen

+2

@ केजेन्सन, हां, यह नए आईआईएस पाइपलाइन मॉडल की अंतर्निहित सीमा है। यदि आपको दो अलग-अलग स्रोतों से प्रमाणित करना होगा, तो आप फॉर्म प्रमाणीकरण का उपयोग कर सकते हैं और एक कस्टम सदस्यता प्रदाता लिख ​​सकते हैं। एक ही समय में दोनों रूपों और विंडोज प्रमाणीकरण को सक्षम करना समर्थित नहीं है। – JamieSee

संबंधित मुद्दे