Lo que se quiere hacer es en su web.config tener una sección en su sección system.web
, así:
<siteMap>
<providers>
<add name="anonymous" type="System.Web.XmlSiteMapProvider" siteMapFile="~/YourAnonymouse.sitemap"/>
<add name="user" type="System.Web.XmlSiteMapProvider" siteMapFile="~/YourNormalUser.sitemap"/>
<add name="admin" type="System.Web.XmlSiteMapProvider" siteMapFile="~/YourAdmin.sitemap"/>
</providers>
</siteMap>
Entonces con esto, usted tendrá tres proveedores mapa del sitio definidos, cada uno apuntando a sus respectivos archivos sitemap
para el menú necesario que busca para cada tipo de usuario.
Luego tendrá un SiteMapDataSource
que usará el control del servidor de menú. Es muy probable que esto exista en tu página maestra. En su Page_Load()
de su página principal que tendrá la lógica para configurar de forma dinámica y programación la fuente de datos de mapa de su control de SiteMapDataSource
:
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
if (HttpContext.Current.User.IsInRole("Admin"))
SiteMapDataSource1.Provider = SiteMap.Providers("admin");
else
SiteMapDataSource1.Provider = SiteMap.Providers("user");
}
else
SiteMapDataSource1.Provider = SiteMap.Providers("anonymous");
es ésta una aplicación web ASP.NET ..? en caso afirmativo, utilice las páginas maestras y establezca la visibilidad de las pestañas o menús a partir de ahí. He utilizado este enfoque muchas veces al autenticar los roles de los grupos de usuarios en la parte superior de ActiveDirectory – MethodMan
. Aquí hay muy poca información. ¿Qué es exactamente un "menú" en este caso? ¿Cómo se crean sus "menús"? ¿Los estás construyendo en una página maestra? ¿Quizás tiene ambos menús en la página maestra y simplemente los muestra/oculta con un condicional que verifica el rol del usuario que ha iniciado sesión? – David
Lo siento pero no entendí lo que acaba de decir ... y sí, es una aplicación web asp.net, iba a hacerlo como control de usuario y lo arrastraré en la página maestra .. – Mazda