0

我在对站点地图提供的菜单链接进行安全修剪时遇到问题。如果我设置securityTrimmingEnabled="false",我的菜单可以工作,但没有安全调整。如果我设置securityTrimmingEnabled="true",我的菜单就会消失。我怎样才能解决这个问题?

web.config中,我有:

<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>

Site.master中,我有:

<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>
4

1 回答 1

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

于 2012-05-14T11:46:31.897 回答