我将自己的SiteMapProvider继承为System.Web.XmlSiteMapProvider
。
我想覆盖检查用户是否在siteMapNode的属性roles
中指定的角色的逻辑:
<siteMapNode url="Add.aspx?type=user" title="Add user" roles="admin" />
我该怎么做? XmlSiteMapProvider调用哪个类的成员来检查securityTrimmingEnabled="true"
?
答案 0 :(得分:3)
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);
}
答案 1 :(得分:1)
public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
{
var roles = node.Roles; // here it is!
return base.IsAccessibleToUser(context, node);
}
答案 2 :(得分: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”