Windows 인증 및 Active Directory 역할을 사용하여 일부 페이지에 대한 액세스를 제한하려는 ASP.Net 사이트가 있습니다. 나는 tutorial page from Scott Gu을 보았지만, 나는 내가 원하는 것을 성취 할 수 없다.보안시 사이트 맵 트리밍시 단일 하위 노드에 영향을 미치는 방법은 무엇입니까?
내 SiteMapDataSource
에서 루트 노드를 무시합니다. 모든 사용자에게 "문서"노드를 표시하려고하지만 "검색"및 "업로드"역할의 표시를 두 가지 역할로 제한합니다. 나는 "DOMAIN \ validrole"에 있지만 "DOMAIN \ madeuprole"에는 없습니다. 아래의 사이트 맵과 web.config를 사용하면 모든 노드가 표시됩니다. "Documents"노드에서 roles="*"
을 제거하면 (Scott Gu의 제안에 따라) 노드가 표시되지 않습니다.
맞춤 코드를 작성하지 않고도 개별 하위 노드의 표시를 제한 할 수있는 방법이 있습니까?
이 내 사이트 맵입니다 :
<?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>