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