基于用户角色的SiteMap不起作用

时间:2010-09-22 10:24:07

标签: asp.net

我的网站地图如下所示:

    <?xml version="1.0" encoding="utf-8" ?>

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
   <siteMapNode url="~/default.aspx" title="Prva stran" roles="*"  description="Shema ISEF">    
        <siteMapNode roles="2" title="Analize" id="Analize"  description="" >
             <siteMapNode url="~/karneki1.aspx" title="Karneki1"  description="" />
             <siteMapNode url="~/karneki2.aspx" title="Karneki2"  description="" />    
        </siteMapNode>
    </siteMapNode>
</siteMap>

如果我在一个标题为“Analiza”的siteMapNode中设置角色,它工作正常,导航中没有显示链接...但是如果我在任何“karneki”siteMapNode上设置角色,链接仍然可见...

是否可以根据用户角色限制对较低链接的访问?

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

解决方法是,您需要在Web.config中为页面本身设置角色。

请参阅http://weblogs.asp.net/jgalloway/archive/2008/01/26/asp-net-menu-and-sitemap-security-trimming-plus-a-trick-for-when-your-menu-and-security-don-t-match-up.aspx

e.g。在名为AdminOnly.aspx的页面的文件夹中添加一个Web.Config,其中包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="AdminOnly.aspx">
    <system.web>
      <authorization>
        <allow roles="Administrator"/>
        <deny users="*" />
      </authorization>
    </system.web>
  </location>
</configuration>

答案 2 :(得分:0)

尝试将角色添加到站点地图中,如下所示

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/default.aspx" roles="*" title="Prva stran" roles="*"  description="Shema ISEF">
    <siteMapNode roles="2" title="Analize" id="Analize"  description="" >
      <siteMapNode roles="*" url="~/karneki1.aspx" title="Karneki1"  description="" />
      <siteMapNode roles="*" url="~/karneki2.aspx" title="Karneki2"  description="" />
    </siteMapNode>
  </siteMapNode>
</siteMap>