質問

私は自分のsitemapprovider継承を転がします System.Web.XmlSiteMapProvider.

ユーザーがSiteMapNodeのプロパティで指定された役割にあることを確認するロジックをオーバーライドしたい roles:

<siteMapNode url="Add.aspx?type=user" title="Add user" roles="admin" />

どうやってやるの?どのクラスのメンバーがxmlsitemapprovider呼び出しを行い、それを確認する securityTrimmingEnabled="true"?

役に立ちましたか?

解決

Abatishchevは近いですが、明確なガイダンスを提供していません。呼び出しベースは、デフォルトのASP.NETアクセス制御ルールを適用します。カスタムルールがある場合は、単に決定を下し、ブールを返してください。

public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
     // use the properties of the context and node to determine accessibility.

     // only call base if you do not want to apply your custom rules
     // return base.IsAccessibleToUser(context, node);
}

他のヒント

public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
     var roles = node.Roles; // here it is!
     return base.IsAccessibleToUser(context, node);
}

誰かがこれについて答えを望んでいるなら、最も簡単です。これをあなたのweb.configに追加することです

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
    <providers>
      <clear/>
      <add name="XmlSiteMapProvider"
           description="Default Sitemap Provider"
           type="System.Web.XmlSiteMapProvider"
           siteMapFile="Web.sitemap"
           securityTrimmingEnabled="true"/>
    </providers>
  </siteMap>

次に、サイトマップで属性の役割を追加できます= "何か"

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top