Asp.net 菜单链接安全微调

Asp.net 菜单链接安全微调,asp.net,menu,sitemap,security-trimming,Asp.net,Menu,Sitemap,Security Trimming,我有一个网站地图提供的菜单链接安全修剪问题。如果我设置了securityTrimmingEnabled=“false”,我的菜单可以工作,但没有安全微调。如果我设置了securityTrimmingEnabled=“true”,我的菜单就会消失。我怎样才能解决这个问题 在web.config中,我有: <siteMap defaultProvider="XmlSiteMapProvider" enabled="true" > <providers> <c

我有一个网站地图提供的菜单链接安全修剪问题。如果我设置了
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>
<div class="clear hideSkiplink">
    <asp:Menu ID="Menu1" runat="server" CssClass="menu" DataSourceID="SiteMapDataSource1">
    </asp:Menu>
    <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
</div>
<?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>
Web.sitemap
中,我有:

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

您需要像这样指定节点上的角色(根据本文)



启用securityTrimmingEnabled时,默认情况下不显示所有节点,除非您处于允许的角色之一。要允许所有角色,您可以执行此操作roles=“*”(如此处所述)

您尚未在节点上指定允许的角色-因此当启用securityTrimmingEnabled时,您不在允许的角色中(因为它没有),因此不会显示任何项目(请参阅文档)。我照你说的做了。现在有些节点看起来是这样的:但它仍然不起作用。另外,一些节点不需要任何身份验证。为什么我的整个菜单一片空白:(禁用securityTrimmingEnabled时-默认情况下显示所有项目。启用该选项时,默认情况下不显示所有项目-它们仅在用户处于允许的角色之一时显示-您不能将两者混合使用,因此如果将某个节点的角色属性留空,它将永远不会显示。没有办法允许每个人都访问某些节点吗nk您可以执行角色=“*”(根据本文)