के साथ प्रतिरूपण सेट अप करें, मैंने एक बहुत ही सरल प्रोजेक्ट बनाया है जो दो निर्देशिकाओं में फ़ाइलों की संख्या को गिनने का प्रयास करता है। User1
को Directory2
और User2
तक पहुंचने की अनुमति नहीं है Directory1
तक पहुंचने की अनुमति नहीं है। प्रतिरूपण के कारण मुझे अपने आवेदन को कॉल करने वाले उपयोगकर्ता के आधार पर केवल एक नंबर प्राप्त करना चाहिए। दोनों उपयोगकर्ता प्रशासकों के रूप में स्थापित हैं।पहली समझ के लिए एएसपी.NET
इसलिए मैंने विजुअल स्टूडियो 2015 (विंडोज 8.1 पर चल रहे) में एक नया एमवीसी-प्रोजेक्ट बनाया है और विंडोज प्रमाणीकरण का उपयोग करने के लिए चुना है। एक बार एप्लिकेशन चालू हो रहा है और चल रहा है (आईएसएस एक्सप्रेस में), मैं अपनी मशीन पर User1
पर स्विच करता हूं (कोई सक्रिय निर्देशिका नहीं है) और वेबसाइट को इंटरनेट एक्सप्लोरर में कॉल करें (हाँ, "एकीकृत विंडोज प्रमाणीकरण" सेटिंग्स में सक्षम है)। इस सेटअप के साथ, HttpContext.User.Identity
में उपयोगकर्ता User1
और WindowsIdentity.GetCurrent()
मेरा विकास उपयोगकर्ता है, जिसे मैं विजुअल स्टूडियो में काम कर रहा हूं।
मैं भी मैन्युअल रूप धारण करने की कोशिश की है: "। या तो एक आवश्यक प्रतिरूपण स्तर प्रदान नहीं किया गया है, या प्रदान की प्रतिरूपण स्तर अमान्य है"
WindowsIdentity winId = (WindowsIdentity)User.Identity;
WindowsImpersonationContext ctx = null;
try
{
ctx = winId.Impersonate();
// GetNumbers() tries to get the number of files for both directories
numbers = GetNumbers();
}
catch (Exception e)
{
}
finally
{
if (ctx != null)
{
ctx.Undo();
}
}
दुर्भाग्य से, मैं अपवाद कुछ लोग दावा कर रहे थे कि इसने अपनी समस्या हल की है: https://kc.mcafee.com/corporate/index?page=content&id=KB56194 मेरे लिए नहीं। मैंने User1
और मेरे स्वयं के उपयोगकर्ता को सूचियों में जोड़ा है और कंप्यूटर को पुनरारंभ किया है। कोई परिवर्तन नहीं होता है।
एकमात्र चीज जो मुझे थोड़ी सी उम्मीद देती है, एक अलग लॉगिन के साथ प्रतिरूपण है, जैसा कि https://msdn.microsoft.com/en-us/library/ms998351.aspx#paght000023_impersonatingusinglogonuser पर वर्णित है, नुकसान काफी स्पष्ट हैं: मुझे उपयोगकर्ता का पासवर्ड होना चाहिए और यदि उपयोगकर्ता पहले से ही लॉगिन कर रहा है तो मुझे फिर से लॉगिन क्यों करना चाहिए यह मेरे लिए किया
हालांकि यह मेरे द्वारा बड़े बदलाव के बिना एक नई परियोजना है, बस मानसिक स्वास्थ्य की जांच के लिए कुछ और जानकारी ...
मेरे Web.config
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
मेरे परियोजना सेटिंग्स हैं
- "बेनामी प्रमाणीकरण"
false
- "विंडोज प्रमाणीकरण आयन "
true
- है" प्रबंधित pipline मोड "
Integrated
क्या उम्मीद के रूप में इस सरल परियोजना का काम करने के लिए बदलने के लिए पर कोई सुझाव है?
सादर, कार्स्टन