2011-12-27 28 views
5

Estoy intentando crear un menú que se ordene de forma diferente según cuál sea la función del usuario.Creación de menús en tiempo de ejecución según la función de usuario

Por ejemplo, si el usuario es un papel de administrador, el menú que se muestra será:

  • AdminPane

  • RegisterUser

  • UserRoles

y si el usuario es función básica:

  • ViewProducts

  • makeOrder

Este es un ejemplo de diseño.

Agradecería la ayuda que he estado buscando en la red durante 2 horas sin suerte.

Gracias.

+0

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

+0

. 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

+0

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

Respuesta

4

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"); 
0

Todo esto se puede lograr mediante el uso de MasterPages y de devolución de datos o la carga de la página inicial se puede crear una variable de sesión que almacena los valores o escribir algo en contra de ActiveDirectory bastante simple ..

Cuestiones relacionadas