2014-01-22 3 views
0

웹 사이트 프로젝트 (VS 2010)에서 보안 트리밍이 활성화 된 System.Web.XmlSiteMapProvider을 사용하여 web.sitemap에서 피드하는 <asp:Menu>이 있습니다.Web.siteMap의 절대 URL

모두 잘 작동합니다. 분명히 아래 예제에서 자식 노드를 보려면 "Administrator"로 인증해야합니다. 하지만 여기서 문제는 절대 URL이있는 사이트 맵 노드가 메뉴에 표시되지 않는다는 것입니다.

<siteMapNode url="~/Administration/default.aspx" title="Administration" roles="Administrator" > 
    <siteMapNode url="~/Administration/worksfine.aspx" title="Does show" /> 
    <siteMapNode url="http://pmspublic.in.ohchr.org" title="Does not show" /> 
</siteMapNode> 

모든 아이디어를 어떻게 메뉴 컨트롤의 데이터 바인딩 이벤트를 해킹하지 않고 이러한 목표를 달성하기 위해 : 다음은 web.sitemap의 발췌 한 것입니까? 감사합니다.

답변

0

보안 트리밍이 활성화되어 있고 absoulte URL이있는 노드가 제한된 SiteMapNode 내에 있습니다. 외부 URL에는 현재 사용자의 권한을 확인하는 web.config가 없으므로 각각의 사이트 맵 노드는 삭제됩니다.

솔루션 : 절대 URL 노드에 roles="*"을 추가하면 모든 사람이 노드에 액세스 할 수 있으므로 해당 노드의 보안 조정이 건너 뜁니다. 좋아요 :

<siteMapNode url="~/Administration/default.aspx" title="Administration" roles="Administrator" > 
    <siteMapNode url="~/Administration/worksfine.aspx" title="Does show" /> 
    <siteMapNode url="http://pmspublic.in.ohchr.org" title="Does not show" roles="*" /> 
</siteMapNode>