2009-11-27 2 views
1

У меня есть сайт 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> 

ответ

1

Сортировано - вам нужно установить разрешение на страницу в Интернете. конфигурационный файл, как это:

<location path="Documents/Upload.aspx"> 
    <system.web> 
     <authorization> 
      <allow roles="DOMAIN\madeuprole"/> 
      <deny users="*"/> 
     </authorization> 
    </system.web> 
</location> 

Я попытался это с пути "~/Documents/Upload.aspx", но Didn» t work - это должен быть путь относительно файла конфигурации.

Кроме того, я должен был поставить URL в моей карты сайта узлов, как это:

<siteMapNode title="Documents" roles="*" url="Made-Up.aspx"> 

Это остановило все исчезающее, хотя я понятия не имею, почему. Я не показываю URL-адрес, поэтому любой сделанный из них делает трюк.

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