2012-05-14 4 views
0

사이트 맵에서 제공하는 메뉴 링크의 보안 트리밍에 문제가 있습니다. securityTrimmingEnabled="false"을 설정하면 메뉴가 작동하지만 보안 조정이 수행되지 않습니다. securityTrimmingEnabled="true"으로 설정하면 메뉴가 사라집니다. 이 문제를 어떻게 해결할 수 있습니까? web.config에서메뉴 링크 보안 트리밍

, 내가 가진 :

Site.master에서
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true" > 
    <providers> 
    <clear /> 
    <add name="XmlSiteMapProvider" 
      description="Default SiteMap provider." 
      type="System.Web.XmlSiteMapProvider" 
      siteMapFile="Web.sitemap" 
      securityTrimmingEnabled="true" /> 
    </providers> 
</siteMap> 

, 내가 가진 :

<div class="clear hideSkiplink"> 
    <asp:Menu ID="Menu1" runat="server" CssClass="menu" DataSourceID="SiteMapDataSource1"> 
    </asp:Menu> 
    <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" /> 
</div> 

Web.sitemap에서, 내가 가진 :

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 
    <siteMapNode url="" title="***"> 
    <siteMapNode url="" title="***"> 
     <siteMapNode url="~/***.aspx" title="***" /> 
     <siteMapNode url="~/***.aspx" title="***" /> 
     <siteMapNode url="~/***.aspx" title="***" /> 
     <siteMapNode url="~/***.aspx" title="***" /> 
    </siteMapNode> 
    <siteMapNode url="" title="***"> 
     <siteMapNode url="~/Account/***.aspx" title="***" /> 
     <siteMapNode url="~/Account/***.aspx" title="***" /> 
     <siteMapNode url="~/Account/***.aspx" title="***" /> 
     <siteMapNode url="~/Account/***.aspx" title="***" /> 
    </siteMapNode> 
    </siteMapNode> 
</siteMap> 
+0

노드에서 허용 된 역할을 지정하지 않았습니다. 따라서 securityTrimmingEnabled를 사용하도록 설정하면 허용 된 역할을 수행하지 않습니다 (아무 것도 없으므로).) 그래서 항목이 표시되지 않습니다 (문서 http://msdn.microsoft.com/en-us/library/ms178428.aspx 참조) –

+0

감사합니다 kevin. ive 무슨 말했는지. 이제 노드 중 일부는 다음과 같이 보입니다. 그러나 여전히 작동하지 않습니다. 게다가 일부 노드는 인증을 필요로하지 않습니다. 왜 내 전체 메뉴가 완전히 비어 있습니다 :( – brsgrlr

+0

securityTrimmingEnabled 해제 - 모든 항목이 기본적으로 표시됩니다. 모든 항목에 * 기본적으로 * 표시되지 않습니다 - 사용자가 허용 된 역할 중 하나에있는 경우에만 표시됩니다. 두 가지를 섞어서 사용할 수 없기 때문에 노드에 역할을 비워두면 전혀 표시되지 않습니다. –

답변

1

당신은에 역할을 지정해야합니다 당신의 이런 노드 (이 기사에 따르면 http://msdn.microsoft.com/en-us/library/ms178428.aspx)

<siteMapNode title="Support" description="Support" url="~/Customers/Support.aspx" roles="Customers" /> 

허용 된 역할 중 하나에 있지 않는 한 securityTrimmingEnabled가 활성화되면 모든 노드가 기본적으로 표시되지 않습니다. 모든 역할을 허용하려면 여기에 설명 된대로 http://blogs.msdn.com/b/dannychen/archive/2006/03/16/553005.aspx)