0

J'ai un menu personnalisé qui utilise le plan de site asp.net standard. Cela fonctionne bien, mais certaines de mes pages sont générées dynamiquement par un réécriteur d'URL, elles ne sont donc pas insérées dans le fichier XML du sitemap. À l'heure actuelle j'ai roulé une solution personnalisée qui montre/cache les éléments de menu via la classe CSS et une vérification programmatique du rôle de l'utilisateur. Cela fonctionne bien jusqu'à ce que je visite une page dynamique qui n'existe pas dans le fichier sitemap. J'ai essayé l'attribut "rôles" dans le fichier sitemap avec le découpage de sécurité mais cela ne fonctionne pas parce que j'ai un menu personnalisé.Afficher/masquer les éléments de menu personnalisés en fonction du fichier Rôles/Web.sitemap

Existe-t-il un moyen de tirer parti de l'attribut roles du fichier sitemap pour afficher/masquer les éléments de menu de mon contrôle personnalisé ci-dessous, même si certaines pages ne figurent pas dans le sitemap? Mon contrôle de menu est ci-dessous ...

<div class="menu"> 
<ul> 
    <asp:Repeater ID="rpt" runat="server" DataSourceID="smdsMenuPrimary" 
     EnableViewState="False"> 
     <ItemTemplate>     
      <li class="<%#GetDisplayClass((SiteMapNode)Container.DataItem)%>"><a href='<%# ((SiteMapNode)Container.DataItem).Url %>'><%# ((SiteMapNode)Container.DataItem).Title %></a></li>     
     </ItemTemplate> 
    </asp:Repeater> 
</ul> 

Répondre

0

Vous pouvez utiliser UrlAuthorizationModule.CheckUrlAccessForPrincipal (chemin) pour tester chaque URL de la carte du site - cette méthode renvoie true si l'utilisateur a accès au chemin (fichier ou dossier) et faux sinon.