2009-07-29 12 views
0

J'ai ce plan du site:Problème de coupe de sécurité ASP.NET impossible à contrôler avec un grain fin?

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"> 
    <siteMapNode> 
    <siteMapNode url="www.google.com" title="Google" roles="*" /> 
    <siteMapNode url="www.zdnet.com" title="Zdnet" roles="NonExistingRole" /> 
    <siteMapNode url="www.microsoft.com" title="Microsoft" roles="*" /> 
    <siteMapNode url="www.bing.com" title="Bing" roles="*" /> 
    </siteMapNode> 
</siteMap> 

J'utilise un RoleProvider personnalisé configuré comme ceci (cela fonctionne chaque fois que je l'appelle par exemple la méthode GetRolesForUser):

<authentication mode="Windows"/> 
<roleManager enabled="true" defaultProvider="MyProvider"> 
    <providers> 
     <clear/> 
     <add name="MyProvider" type="CustomProviders.MyTestRoleProvider, CustomProviders, Version=1.0.0.0, Culture=neutral"/> 
    </providers> 
</roleManager> 

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

Ce que je pense est que le noeud with roles = "NonExistingRoles" ne serait pas visualisé, mais c'est le cas. Comment résoudre ce problème?

Dois-je également activer?

Répondre

2

Apparemment, il est parce que le siteMapNode racine aussi besoin d'un rôle attribut défini sur * comme ceci:

<siteMapNode roles="*">