Как отфильтровать узлы элементов управления TreeView и Menu с источниками данных карты сайта на основе разрешений пользователя?

Я использую элементы управления входом ASP.NET и Проверка подлинности с помощью форм для членства / учетных данных для веб-приложения ASP.NET. И я использую карту сайта для навигации по сайту.

У меня есть элементы управления навигацией ASP.NET TreeView и Menu, заполненные с помощью SiteMapDataSource. Но закрытые страницы, предназначенные только для администраторов, видны пользователям без прав администратора.


Кевин Панг написал:

Я не уверен, чем этот вопрос отличается от вашего другой вопрос

Другой вопрос связан с назначением и поддержанием разрешений.

Этот вопрос касается только представления навигации. В частности, элементы управления TreeView и Menu с источниками данных карты сайта.

<asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1" />
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="False" />

Николас написал:

добавить role = "SomeRole" в карту сайта

Это решает только проблему с дисплеем? Или такие разрешения для страниц применяются?


person Zack Peterson    schedule 28.08.2008    source источник


Ответы (3)


Мне пришлось установить securityTrimmingEnabled в значение «true» в моем файле web.config.

<?xml version="1.0"?>
<configuration>
    ...
    <system.web>
        ...
        <siteMap defaultProvider="default">
            <providers>
                <clear/>
                <add name="default"
                    type="System.Web.XmlSiteMapProvider"
                    siteMapFile="web.sitemap"
                    securityTrimmingEnabled="true"/>
            </providers>
        </siteMap>
        ...
    </system.web>
    ...
</configuration>
person Zack Peterson    schedule 28.08.2008

Я не уверен, чем этот вопрос отличается от вашего другой вопрос, но я все равно постараюсь на него ответить.

Если вам нужен учебник о том, как реализовать аутентификацию на основе ролей, ознакомьтесь с руководством по адресу 4GuysFromRolla.

person Kevin Pang    schedule 28.08.2008

securityTrimmingEnabled = "true" работает для внутренних страниц, у которых есть файл конфигурации, ограничивающий разрешения. Вы также можете добавить role = "SomeRole" в карту сайта, чтобы контролировать механизм отображения, что полезно, если у вас есть пункты меню для внешних сайтов.

person Nicholas    schedule 29.08.2008