asp.net - MvcSiteMapProvider shows all menuitems even when the user isn't authorized for the action -


मैं MvcSiteMapProvider को मेरी प्रोजेक्ट में और MvcSiteMapProvider_SecurityTrimmingEnabled पैरामीटर काम करने के लिए प्रतीत नहीं होता मेरी प्रोजेक्ट की मुख्य पंक्तियां हैं:

  • विजुअल स्टूडियो 2013
  • एएसपी.Net MVC4
  • एकता आईसी कंटेनर
  • सरलमम्मीशिप प्रदाता
  • MVcSiteMapProvider NuGet
  • MvcSiteMapProvider_SecurityTrimmingEnabled "सत्य" पर सेट किया गया था

    जब मैं प्रोजेक्ट चलाता हूं, तो प्रत्येक मेनू दिखाया जाता है, भले ही उपयोगकर्ता को प्रमाणित नहीं किया गया है या कार्रवाई के लिए अधिकृत नहीं है।

    मैं इसे कैसे काम कर सकता हूं?

    के अनुसार, बाह्य डीआई कंटेनर का उपयोग करते समय सभी विन्यास डि कॉन्फ़िगरेशन द्वारा प्रदान किए जाने चाहिए। यह मुख्यतः इस तथ्य के कारण है कि बाहरी डि का उपयोग करते समय, कई सेटिंग्स की बहुरूपता को यह कैसे कॉन्फ़िगर किया गया है इसके आधार पर बदल सकता है।

    तो, दूसरे शब्दों में, MvcSiteMapProvider_SecurityTrimmingEnabled वेब। कॉन्फिग / ऐप सेटिंग में बाहरी डी का उपयोग करते समय कोई प्रभाव नहीं पड़ेगा।

    इस सेटिंग की आपूर्ति करने के लिए, आपको /DI/Unity/ContainerExtensions/MvcSiteMapProviderContainerExtension.cs फ़ाइल का उपयोग करने की आवश्यकता है (मॉड्यूल) फ़ाइल के शीर्ष के पास, सुरक्षारियमिंग सक्षम नामक एक चर है जिसे सुरक्षा ट्रिमिंग को सक्षम करने के लिए सही पर सेट करना होगा।

      bool securityTrimmingEnabled = true;  

    आप किसी भी इंटरफेस के अपने खुद के कार्यान्वयन को इंजेक्शन के लिए या अक्षम करने के लिए कई सुविधाओं को अक्षम करने के लिए इस फ़ाइल को बदल सकते हैं जो आपके ऐप के लिए समझ नहीं पाते हैं।


Comments