Показать / скрыть пользовательские пункты меню на основе файла Roles / Web.sitemap - PullRequest
0 голосов
/ 12 марта 2010

У меня есть пользовательское меню, которое использует стандартную карту сайта asp.net. Это работает хорошо, но некоторые из моих страниц динамически генерируются при переписывании URL-адресов, поэтому они не помещаются в XML-файл карты сайта. На данный момент я накатил собственное решение, которое показывает / скрывает пункты меню через класс CSS и программную проверку роли, в которой находится пользователь. Это работает нормально, пока я не посещаю динамическую страницу, которая не существует в файле карты сайта. Я пробовал атрибут "role" в файле карты сайта с усечением безопасности, но он не работает, потому что у меня есть пользовательское меню.

Можно ли как-нибудь использовать атрибут ролей в файле карты сайта, чтобы показать / скрыть пункты меню для моего пользовательского элемента управления ниже, даже если некоторые страницы отсутствуют в карте сайта? Мое меню управления ниже ...

<div class="menu">
<ul>
    <asp:Repeater ID="rpt" runat="server" DataSourceID="smdsMenuPrimary" 
        EnableViewState="False">
        <ItemTemplate>                
            <li class="<%#GetDisplayClass((SiteMapNode)Container.DataItem)%>"><a href='<%# ((SiteMapNode)Container.DataItem).Url %>'><%# ((SiteMapNode)Container.DataItem).Title %></a></li>                
        </ItemTemplate>
    </asp:Repeater>
</ul>

1 Ответ

0 голосов
/ 18 ноября 2010

Вы можете использовать UrlAuthorizationModule.CheckUrlAccessForPrincipal (путь) для проверки каждого URL-адреса с карты сайта - этот метод возвращает значение true, если у пользователя есть доступ к пути (файлу или папке), и значение false в противном случае.

...