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您可以执行角色=“*”(根据本文)