How does XmlSiteMapProvider validate a user for a given role?

I am migrating my own SiteMapProvider inheriting System.Web.XmlSiteMapProvider.

I want to override the logic for checking the user for the role specified in the siteMapNode property roles:

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

How can i do this? Which member of the class makes an XmlSiteMapProvider call to verify what if securityTrimmingEnabled="true"?

+3
source share
3 answers

abatishchev is close but does not give a clear indication. The call base will apply asp.net access control rules by default. If you have custom rules, just make a decision and return the 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);
}
+3
source
public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
     var roles = node.Roles; // here it is!
     return base.IsAccessibleToUser(context, node);
}
+1
source

, - , 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>

role = "something"

0

Source: https://habr.com/ru/post/1746676/


All Articles