[ASP .NET] comportement sur le custom RoleProvider et web.siteMap

Voilà, en ce moment, je veux pouvoir masquer certain lien de mon menu (construit à l’aide du control menu et du web.SiteMap) en fonction des rôles utilisateurs. Le RoleProvider m’aurait bien convenu mais ce dernier me crée d’office une base ASPNETDB.mdf avec les tables requises, les prod stock, etc… Bien que ca marche imppec, le problème concerne cette seconde base. Je n’en veux absoluement pas de plus la taille fichier est assez lourdingue pour une base vide (10 Mo).

Donc étant curieux, je suis allé voir mon ami MSDN. Et là, tout joyeux que j’étais, les Custom RoleProvider marche de la même manière qu’un Membership. Malheureusement, je me suis rendu compte qu’il va y avoir un problème.

En effet, dans mon fichier Web.SiteMap chaque lien contient un attribut “role” où je définis bien sur le niveau d’autorisation d’accès. Le hic, cet attribut dépend de quel méthode du RoleProvider ? En gros, qui est appelé lorsque l’attribut role recoit une chaine (un paramètre) ??

Exemple du Web.sitemap

<?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="" title="Index" description="" roles="members" > <siteMapNode url="" title="Administration" description="Outil d'administration" roles="admin"> </siteMapNode> <siteMapNode url="" title="Messagerie" description="Messagerie" roles="members"> <siteMapNode url="messagerie.aspx" title="Nouveau" description="Envoi d'un nouveau message" /> <siteMapNode url="suivis_messages.aspx" title="Boîte d'envoi" description="Suivis des messages envoyés" /> </siteMapNode> <siteMapNode url="gestion_compte.aspx" title="Profil" description="Modifier les données de votre compte utilisateur" roles="members" /> </siteMapNode> </siteMap>

Pour ce qui est des méthodes de la class RoleProvider, vous pouvez jetez un oeil sur le MSDN que voici.