Asp.net站点地图

时间:2011-11-01 13:49:34

标签: asp.net sitemap

我一直在努力解决以下问题。请帮忙 我正在使用菜单控件并使用站点地图填充它。

我有一个站点地图提供程序,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
    <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
      <siteMapNode url="" title="Home"  description="" roles="*"  >
        <siteMapNode url="~/Default.aspx" title="PRA Profile" description=""roles="Partner"  >
             </siteMapNode >

        <siteMapNode url="" title="PRA Profile1" description="" roles="Partner">

          <siteMapNode url="~/New.aspx?id=1" title="Partner View"  description="Partner View"> </siteMapNode >
        </siteMapNode >
          <siteMapNode url="~/About.aspx" title="Estimator"  description="~/Test.aspx" roles ="Admin" >
      </siteMapNode >
        <siteMapNode url="~/About.aspx?id=3" title ="Reports" description ="" roles="Admin">
             </siteMapNode>
       </siteMapNode>
    </siteMap>

我在web.config

中添加了securityTrimmingEnabled =“true”

我的问题是,如果我在父节点中输入一个URL,那么roles属性不起作用,它可以正常工作。

如果在父节点中我给出了url,那么roles属性就失败了。如果我不给网址         并添加子节点然后基于角色的显示/隐藏菜单工作完美。         我必须在“非管理员”登录时仅显示父节点,并在管理员与其他屏幕一起登录时显示与子节点相同的屏幕。

请帮忙!

1 个答案:

答案 0 :(得分:0)

“角色”属性是增强属性。换句话说,它增强了安全修整功能,这是基于URL /角色的身份验证设置的一部分。安全修整基于Web配置中的URL安全设置(或其他基于URL /角色的身份验证机制)完成。

请参阅http://msdn.microsoft.com/en-us/library/ms178428.aspx

如果您的基于网址的身份验证机制使用web.config来控制基于网址的身份验证,则需要向您的web.config添加具有授权的位置元素,以获取您尝试控制访问权限的网址:

  <location path="PageWithAuthorization.aspx">
    <system.web>
      <authorization>
        <deny users="?"/>
        <allow roles="Allowed_Role"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

这是授权的基础来源。当上面列出的页面是站点地图的一部分且securityTrimmingEnabled = true时,只有“Allowed_Role”中的用户才会看到站点地图链接。通过在站点地图角色属性中添加其他角色,您可以允许其他角色也可以访问该页面。