Asp.net XmlSiteMapProvider如何检查用户是否处于指定角色?

Asp.net XmlSiteMapProvider如何检查用户是否处于指定角色?,asp.net,sitemapprovider,security-trimming,isaccessibletouser,securitytrimmingenabled,Asp.net,Sitemapprovider,Security Trimming,Isaccessibletouser,Securitytrimmingenabled,我使用自己的SiteMapProvider继承System.Web.XmlSiteMapProvider 我想重写将用户检查为在siteMapNode的属性角色中指定的角色的逻辑: <siteMapNode url="Add.aspx?type=user" title="Add user" roles="admin" /> 我该怎么做?XmlSiteMapProvider调用哪个类的成员来检查securityTrimmingEnabled=“true”?abatishchev是

我使用自己的SiteMapProvider继承
System.Web.XmlSiteMapProvider

我想重写将用户检查为在siteMapNode的属性
角色中指定的角色的逻辑:

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


我该怎么做?XmlSiteMapProvider调用哪个类的成员来检查
securityTrimmingEnabled=“true”

abatishchev是否关闭,但没有提供明确的指导。调用base将应用默认的asp.net访问控制规则。如果您有自定义规则,只需做出决定并返回bool即可

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);
}

如果有人想知道这个问题的答案,最简单的方法就是将其添加到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”

不幸的是,我的问题有一段时间没有吸引任何用户,所以我不得不自己找到解决方案,幸运的是我做到了。你们不能说我是同时行动的,而单一的答案也是我的。因为接受自己的答案不会带来声誉,我很高兴接受你的答案:)谢谢@aba-事实上,我没有注意到OP和答案来自同一个人,只是指导可以更清楚一点。很高兴你找到了答案,也很高兴我能帮忙,如果我找到了。好的,我可以覆盖
IsAccessibleToUser
以应用自己的逻辑进行检查。但是原始的
IsAccessibleToUser
是如何工作的呢?反射器显示它检查
context.User.IsInRole(角色)
。您知道如何将角色设置为
IPrincipal
<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>