Comment affecter des nœuds enfants uniques lors du découpage de la sécurité d'un plan de site?

StackOverflow https://stackoverflow.com/questions/1807624

Question

J'ai un site ASP.Net dans lequel j'essaie d'utiliser les rôles Authentification Windows et Active Directory pour limiter l'accès à certaines pages. J'ai consulté un page du didacticiel de Scott Gu , mais je ne parviens pas à atteindre mes objectifs.

J'ignore le noeud racine dans mon SiteMapDataSource . Je souhaite afficher les " Documents " nœud à tous les utilisateurs, mais limiter l’affichage du " recherche " et " Télécharger " rôles à 2 rôles différents. Je suis dans le "DOMAIN \ validrole". mais pas dans le "DOMAIN \ madeuprole". Avec le plan du site et web.config ci-dessous, tous les nœuds sont affichés. Si je supprime le roles = " * " du " Documents " noeud (comme suggéré par Scott Gu), je ne reçois aucun noeud affiché.

Existe-t-il un moyen de limiter l'affichage de nœuds enfants individuels sans avoir à écrire de code personnalisé?

Voici mon sitemap:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
    <siteMapNode url="~/Default.aspx" 
                 title="Home">
        <siteMapNode title="Documents" roles="*">
            <siteMapNode url="~/Documents/Search.aspx" 
                         title="Search Documents" 
                         roles="DOMAIN\validrole" />
            <siteMapNode url="~/Documents/Upload.aspx" 
                         title="Upload Documents" 
                         roles="DOMAIN\madeuprole" />
            <siteMapNode url="~/Documents/Publish.aspx" 
                         title="Publish Documents" />
        </siteMapNode>
        <siteMapNode title="Users" roles="*">
            <siteMapNode url="~/Users/Search.aspx" 
                         title="Search Users" 
                         roles="DOMAIN\validrole" />
        </siteMapNode>
    </siteMapNode>
</siteMap>

Et voici la section pertinente de mon web.config:

<authentication mode="Windows"/>
<authorization>
    <allow roles="DOMAIN\validrole"/>
    <deny users="*"/>
</authorization>

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
    <providers>
        <add name="XmlSiteMapProvider"
             description="Default SiteMap provider."
             type="System.Web.XmlSiteMapProvider"
             siteMapFile="Web.sitemap"
             securityTrimmingEnabled="true" />
    </providers>
</siteMap>
Était-ce utile?

La solution

Trié - vous devez configurer l'autorisation de la page dans le fichier Web.config comme suit:

<location path="Documents/Upload.aspx">
    <system.web>
        <authorization>
            <allow roles="DOMAIN\madeuprole"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>

Je l'avais essayé avec le chemin " ~ / Documents / Upload.aspx " , mais cela n'a pas fonctionné - il doit s'agir d'un chemin relatif au fichier de configuration.

De plus, je devais insérer une URL dans les nœuds de mon sitemap, comme suit:

<siteMapNode title="Documents" roles="*" url="Made-Up.aspx">

Cela a empêché que tout disparaisse, bien que je ne sache pas pourquoi. Je n’affiche pas l’URL, donc tout ce qui est inventé fait le bon choix.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top