2009-11-27 3 views
1

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> 

답변

1

- 웹의 페이지에 대한 권한을 설정해야합니다. 내가 경로 "~/Documents/Upload.aspx"에 이것을 시도했다

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

하지만 didn를 '설정의이 같은 파일 config 파일에 상대적인 경로 여야합니다.

또한,이 같은 내 사이트 맵 노드에 URL을 넣어했다 : 나는 왜 아무 생각이 없지만

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

는 모든 사라지고을 중단했다. URL을 표시하지 않아서 만들어진 모든 사람이 트릭을 수행합니다.