Как проверяет пользователь XMLSitemAppider Comprovider в определенной роли?
Вопрос
Я катаюсь своим собственным сайтом, унаследованным System.Web.XmlSiteMapProvider
.
Я хочу переопределить логику проверки пользователя в роли, указанной в свойстве Sitemapnode roles
:
<siteMapNode url="Add.aspx?type=user" title="Add user" roles="admin" />
Как я могу это сделать? Участник какого класса делает XMLSitemApprovider, чтобы проверить, что если securityTrimmingEnabled="true"
?
Решение
Абатищев близко, но не дает четкого руководства. Вызов базы применит правила управления доступом по умолчанию ASP.NET. Если у вас есть пользовательские правила, просто сделайте ваше решение и верните Bool.
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);
}
Проще всего, если кто-то хочет ответ на это, это добавить это на ваш web.config
<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>
Затем в вашем каталоге вы можете добавить роли атрибута = «что-то»
Не связан с StackOverflow