我继承了一个广泛使用站点地图的站点。我被问到是否可以使菜单项仅在用户以正确角色登录时才出现。
(我知道我基于角色的登录均正常工作)
我的站点地图中有以下内容
<siteMapNode url="~/" title="Home" description="Home">
<siteMapNode title="Home" url="default.aspx" />
<!--Sets up Product page-->
... Product map always shows, so skipped ...
<siteMapNode title="Support" url="~/support/default.aspx">
<siteMapNode title="CurrentIssues" url="~/support/Issues.aspx" role="Customer" />
</siteMapNode>
...
这行在我的配置中
<add name="main_siteMap" description="Menu Site map Provider" type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" secuirityTrimmingEnabled="true"/>
但是,无论我已登录还是注销,“ CurrentIssues菜单”选项始终可见。(尽管如果您尝试单击它,它会将您带到LoginPage。)
那么,对于那些未登录正确角色的菜单项,我想隐藏其菜单项是什么呢?
您发布的内容存在一些问题。
该siteMapNode
值应该roles
不会role
。
您web.config
输入的内容有错别字(secuirityTrimmingEnabled
有一个额外的i
),应该看起来像这样:
<siteMap defaultProvider="main_siteMap" enabled="true">
<providers>
<add name="main_siteMap"
description="Menu Site map Provider"
type="System.Web.XmlSiteMapProvider "
siteMapFile="Web.sitemap"
securityTrimmingEnabled="true" />
</providers>
</siteMap>
另请注意,以这种方式保护站点地图需要正确实施RoleManagement,这意味着在这种情况下,您还需要在web.config中保护该路径:
<location path="support/issues.aspx">
<system.web>
<authorization>
<allow roles="Customer" />
<deny users="*" />
</authorization>
</system.web>
</location>
另请注意,每个文档:
具有150个以上节点的站点地图文件可能需要更长的时间才能执行安全性整理操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句