3

を継承して自分のSiteMapProviderをロールしSystem.Web.XmlSiteMapProviderます。

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

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

どうやってやるの?XmlSiteMapProviderは、どのクラスのメンバーを呼び出してそれをチェックしsecurityTrimmingEnabled="true"ますか?

4

3 に答える 3

3

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);
}
于 2010-05-22T15:05:29.667 に答える
1
public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
     var roles = node.Roles; // here it is!
     return base.IsAccessibleToUser(context, node);
}
于 2010-05-22T14:09:57.053 に答える
0

最も簡単なのは、誰かがこれについての答えを求めている場合、これを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>

次に、サイトマップに属性roles="something"を追加できます

于 2013-06-25T17:21:47.213 に答える