1

我有一个烦人的问题,我找不到任何解决方案的开始,所以我希望你能帮助我。

我有一个为每个节点定义角色的站点地图:

<?xml version="1.0" encoding="utf-8"?>
<siteMap enableLocalization="true">
  <siteMapNode title="" url="" roles="">
    <siteMapNode title="default" url="~/Default.aspx" roles="user" />
    <siteMapNode title="supervision" url="~/EcranSupervision.aspx" roles="Admin" />
    <siteMapNode title="exploitation" url="~/ChaineTraitementList.aspx" roles="Admin" />
  </siteMapNode>
</siteMap>

在我的 web.config 中,我启用了安全性并使用了自定义提供程序:

<siteMap defaultProvider="MainMenuSitemap">
      <providers>
        <add name="MainMenuSitemap" type="UbiXmlSiteMapProvider" siteMapFile="Web.sitemap" securityTrimmingEnabled="true" />
      </providers>
    </siteMap>

在我的提供者中,我只覆盖 IsAccessibleToUser 来执行我的逻辑:

public class UbiXmlSiteMapProvider : XmlSiteMapProvider
    {
        public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
        {
            // custom logic here
        }
    }

我的问题是 IsAccessibleToUser 中使用的节点始终是 URL 为“Default.aspx”的节点。因此,如果我有角色可以看到它,则会显示所有节点,如果我没有角色,则不会显示任何节点。

我不明白这里有什么问题。

你有什么提示吗?

4

0 回答 0