У меня есть сайт ASP.Net, в котором я пытаюсь использовать роли Windows Authentication и Active Directory, чтобы ограничить доступ к некоторым страницам. Я посмотрел на tutorial page from Scott Gu, но я не могу достичь того, чего хочу.Как повлиять на отдельные дочерние узлы, когда Security Trimming SiteMap?
Я игнорирую корневой узел в своем SiteMapDataSource
. Я хочу показать узел «Документы» всем пользователям, но ограничить отображение ролей «Поиск» и «Загрузить» на две разные роли. Я нахожусь в «DOMAIN \ validrole», но не в «DOMAIN \ madeuprole». Ниже приведена карта сайта и web.config, и я получаю все отображаемые узлы. Если я удалю roles="*"
с узла «Документы» (как предложил Скотт Гу), я не получаю ни одного отображаемого узла.
Есть ли способ ограничить отображение отдельных дочерних узлов без необходимости писать собственный код?
Это моя карта сайта:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
<siteMapNode url="~/Default.aspx"
title="Home">
<siteMapNode title="Documents" roles="*">
<siteMapNode url="~/Documents/Search.aspx"
title="Search Documents"
roles="DOMAIN\validrole" />
<siteMapNode url="~/Documents/Upload.aspx"
title="Upload Documents"
roles="DOMAIN\madeuprole" />
<siteMapNode url="~/Documents/Publish.aspx"
title="Publish Documents" />
</siteMapNode>
<siteMapNode title="Users" roles="*">
<siteMapNode url="~/Users/Search.aspx"
title="Search Users"
roles="DOMAIN\validrole" />
</siteMapNode>
</siteMapNode>
</siteMap>
И это соответствующий раздел моего web.config:
<authentication mode="Windows"/>
<authorization>
<allow roles="DOMAIN\validrole"/>
<deny users="*"/>
</authorization>
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
<providers>
<add name="XmlSiteMapProvider"
description="Default SiteMap provider."
type="System.Web.XmlSiteMapProvider"
siteMapFile="Web.sitemap"
securityTrimmingEnabled="true" />
</providers>
</siteMap>