Вопрос

Я катаюсь своим собственным сайтом, унаследованным 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>

Затем в вашем каталоге вы можете добавить роли атрибута = «что-то»

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top