Wie funktionieren Benutzer XmlSiteMapProvider Prüfung in bestimmten Rolle zu sein?
Frage
Ich rolle meine eigene Sitemap vererben System.Web.XmlSiteMapProvider
.
Ich mag Logik außer Kraft zu setzen Benutzer der Überprüfung in einer Rolle in siteMapNode Eigentum roles
angegeben werden:
<siteMapNode url="Add.aspx?type=user" title="Add user" roles="admin" />
Wie kann ich das tun? Welche Klasse-Mitglied hat XmlSiteMapProvider Anruf zu überprüfen, dass, wenn securityTrimmingEnabled="true"
?
Lösung
abatishchev liegt in der Nähe aber keine klare Führung. Basis Aufruf wird die Standard asp.net Zugriffskontrollregeln gelten. Wenn Sie benutzerdefinierte Regeln, einfach Ihre Entscheidung treffen und ein Bool zurück.
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);
}
Andere Tipps
public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
var roles = node.Roles; // here it is!
return base.IsAccessibleToUser(context, node);
}
Am einfachsten, wenn jemand eine Antwort auf diese will, ist dies in dem 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>
dann in Ihrer Sitemap können Sie die Attribut Rollen hinzufügen = "etwas"