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"?

War es hilfreich?

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"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top