سؤال

أنا أدرس وراثة sitemapprovider System.Web.XmlSiteMapProvider.

أرغب في تجاوز منطق التحقق من المستخدم ليكون في دور محدد في خاصية SitemapNode roles:

<siteMapNode url="Add.aspx?type=user" title="Add user" roles="admin" />

كيف أقوم بذلك؟ أي عضو في الفئة يقوم بإجراء مكالمة XMLSitemApprovider للتحقق من ذلك إذا securityTrimmingEnabled="true"?

هل كانت مفيدة؟

المحلول

Abatishchev قريبة ولكنه لا يوفر إرشادات واضحة. ستطبق قاعدة الاتصال قواعد التحكم في الوصول إلى ASP.NET. إذا كان لديك قواعد مخصصة ، فما عليك سوى اتخاذ قرارك وإرجاع منطقة.

public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
     // use the properties of the context and node to determine accessibility.

     // only call base if you do not want to apply your custom rules
     // return base.IsAccessibleToUser(context, node);
}

نصائح أخرى

public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
     var roles = node.Roles; // here it is!
     return base.IsAccessibleToUser(context, node);
}

أسهل ، إذا أراد شخص ما إجابة على هذا الإجابة هو إضافة هذا إلى الويب الخاص بك

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
    <providers>
      <clear/>
      <add name="XmlSiteMapProvider"
           description="Default Sitemap Provider"
           type="System.Web.XmlSiteMapProvider"
           siteMapFile="Web.sitemap"
           securityTrimmingEnabled="true"/>
    </providers>
  </siteMap>

ثم في خريطة sitemap الخاصة بك يمكنك إضافة أدوار السمة = "شيء"

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top