Attraverso l'impostazione dei provider per la gestione di utenti e ruoli, è possibile filtrare singoli elementi di una Site Map in base a specifiche regole di autorizzazione.
I passi da seguire sono due:

  1. Inserire il provider relativo al proprio file .sitemap, nell'elenco dei SiteMap provider presente nel web.config e settare a true la proprietà securityTrimmingEnabled

    <siteMap defaultProvider="menu">
    
    <providers>
    <add name="menu" type="System.Web.XmlSiteMapProvider"
    siteMapFile="~/Web.sitemap" securityTrimmingEnabled="true"
    />
    </providers>
    </siteMap>

  2. Inserire l'attributo roles in ogni elemento di tipo SiteMapNode.
Questo attributo va valorizzato o con l'elenco degli ruoli abilitati a vedere quel nodo o con la wildcard (*), che definisce il nodo come visibile a tutti.

<?xml version="1.0" encoding="utf-8" ?>

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode title="Menu" roles="*">
<siteMapNode url="~/default.aspx" title="Home" roles="*" />
<siteMapNode url="~/Manager/default.aspx" title="Manager page" roles="Admin, Manager" />
<siteMapNode url="~/Admin/default.aspx" title="Admin page" roles="Admin" />
</siteMapNode>
</siteMap>

Facile all'uso e veramente utile !