2

J'ai un site web.sitemap avec le découpage de sécurité activé, mais je dois masquer un élément de menu basé sur un rôle sur une page qui n'a pas de règles d'accès dans le fichier web.config . I.e J'ai une page Campagne qui est utilisée pour afficher les campagnes existantes et pour ajouter de nouvelles campagnes, mais je souhaite que l'élément de menu "Nouvelles campagnes" soit masqué pour les utilisateurs anonymes. J'ai essayé d'ajouter le nom de rôle à l'attribut roles dans le fichier web.sitemap, mais cela n'a aucun effet.Masquer l'élément de menu autorisé dans asp.net web.sitemap

Je suis sûr qu'il doit y avoir un moyen rapide de le faire sans modifier le fournisseur de sitemap qui est mon prochain port d'appel.

Répondre

2

S'il s'agit d'un cas particulier pour les utilisateurs anonymes, vous pouvez créer un second SiteMap.

Créer un nouveau fichier WebAnon.sitemap.
Créer un nouveau fournisseur de plan du site dans le web.config

<add name="anonProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="WebAnon.sitemap" securityTrimmingEnabled="true"/> 

Set à « anonProvider » propriété SiteMapProvider du SiteMapDataSource dans le code sous-jacent si c'est un utilisateur anonyme.

+0

J'espérais qu'il y avait un moyen de le faire "out the box", mais on dirait que je vais devoir créer un nouveau fournisseur de sitemap. – Nicholas

+0

merci, mais je ne comprends pas pourquoi ajouter le "?" aux règles de web.sitemap donne les noms des règles d'autorisation ne peuvent pas contenir le '?' erreur de caractère –

1

L'attribut roles dans une <siteMapNode /> est une liste "autoriser", pas un refus. Créer/modifier un élément <location /> correspondant dans web.config pour autoriser les utilisateurs authentifiés et refuser l'anonymat; par exemple.

<location path="campaigns.aspx"> 
<system.web> 
    <authorization> 
    <allow users="*" /> 
    <deny users="?" /> 
    </authorization> 
</system.web> 
</location> 

BTW, si vous utilisez un principal et les rôles Windows, les modifications apportées à votre appartenance à un groupe ne prennent pas effet avant de vous déconnecter puis de nouveau.

+0

Cela ne fonctionnera pas car la même page est utilisée pour afficher les campagnes par des utilisateurs anonymes. Par conséquent, je dois pouvoir masquer simplement l'élément de menu sans le verrouiller, dans ce cas, la page gère les différents états de sécurité. – Nicholas

Questions connexes