我有一个烦人的问题,我找不到任何解决方案的开头,所以我希望你能帮助我。
我有一个为每个节点定义角色的站点地图:
<?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中使用的节点始终是具有url“Default.aspx”的节点。 因此,如果我有角色看到它,则显示所有节点,如果我没有角色,则不显示任何节点。
我不明白这里有什么问题。
你有提示吗?