2011-12-27 3 views
5

Я пытаюсь создать меню, которое будет сортироваться по-разному в зависимости от роли пользователя.Создание меню во время выполнения в зависимости от роли пользователя

Например, если пользователь является администратором роль, меню, показанное будет:

  • AdminPane

  • RegisterUser

  • UserRoles

и если пользователь Основная роль:

  • ViewProducts

  • makeOrder

Это пример макета.

Я был бы признателен за помощь, поскольку я искал сеть в течение 2 часов без везения.

Спасибо.

+0

является ли это веб-приложение ASP.NET? .. если это так, используйте мастер-страницы и установите видимость вкладок или меню оттуда. Я использовал этот подход много раз, когда аутентифицировал роли групп пользователей ontop ActiveDirectory. – MethodMan

+0

Здесь очень мало информации. Что такое «меню» в данном случае? Как создаются ваши существующие «меню»? Вы просто строите их на главной странице? Может быть, есть оба меню на главной странице и просто показать/скрыть их с условием, который проверяет роль зарегистрированного пользователя? – David

+0

Мне жаль, но я не понял, что вы только что сказали ... и да, это веб-приложение asp.net, я собирался сделать это как пользовательский элемент управления и перетащить его на главную страницу. – Mazda

ответ

4

Что вы хотите сделать это в ваш web.config есть раздел в вашем system.web разделе, например, так:

<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> 

Тогда с этим, вы будете иметь три поставщика карта сайта определены, каждый из которых указывает на их соответствующих sitemap файлов для нужного меню вы смотрите для каждого типа пользователя.

Тогда у вас будет SiteMapDataSource, который будет использовать ваш серверный сервер. Скорее всего, это будет на вашей главной странице. На вашем Page_Load() вашей главной страницы вы будете иметь логику динамически и программно задать источник данных карты сайта вашего 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

Все это может быть достигнуто с помощью MasterPages и Postback или начальной загрузки страницы вы можете создать переменную сессии, которая хранит значения или написать что-то против ActiveDirectory довольно простой ..

Смежные вопросы