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 で使用されるノードが常に「Default.aspx」という URL を持つノードであることです。したがって、それを見る役割がある場合はすべてのノードが表示され、役割がない場合はノードが表示されません。

ここで何が悪いのかわかりません。

ヒントはありますか?

4

0 に答える 0