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:
- 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> - Inserire l'attributo roles in ogni elemento di tipo SiteMapNode.
<?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 !