كيف يقوم XMLSITEMPProvider بفحص المستخدم ليكون في دور محدد؟
سؤال
أنا أدرس وراثة 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 الخاصة بك يمكنك إضافة أدوار السمة = "شيء"
لا تنتمي إلى StackOverflow