Создание меню во время выполнения в зависимости от роли пользователя - PullRequest
5 голосов
/ 27 декабря 2011

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

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

  • AdminPane

  • RegisterUser

  • UserRoles

и если пользователь имеет базовую роль:

  • ViewProducts

  • makeOrder

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

Буду признателен за помощь, так как я два часа безуспешно искал в сети.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 27 декабря 2011

Что вы хотите сделать, так это в вашем файле 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 голосов
/ 27 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...