C# 基于用户的不同asp:菜单

C# 基于用户的不同asp:菜单,c#,asp.net,sitemapprovider,aspmenu,C#,Asp.net,Sitemapprovider,Aspmenu,我有一个oracle数据库,用于存储本地Intranet的菜单和用户数据 数据包括哪些usesr可以访问哪些页面 最初,我创建了一个扩展StaticSiteMapProvider类的类,但是当它进入测试环境时,我发现它是为整个站点缓存的,而不是以用户为基础的。在各种论坛上在线阅读后,有人建议我应该继承SiteMapProvider,因为这将使我能够在用户基础上拥有一个单独的SiteMapProvider和ASP:菜单项实例,但这仍然没有解决问题 目前我有一个用户控件,它包含asp:菜单,并使用我

我有一个oracle数据库,用于存储本地Intranet的菜单和用户数据

数据包括哪些usesr可以访问哪些页面

最初,我创建了一个扩展StaticSiteMapProvider类的类,但是当它进入测试环境时,我发现它是为整个站点缓存的,而不是以用户为基础的。在各种论坛上在线阅读后,有人建议我应该继承SiteMapProvider,因为这将使我能够在用户基础上拥有一个单独的SiteMapProvider和ASP:菜单项实例,但这仍然没有解决问题

目前我有一个用户控件,它包含asp:菜单,并使用我的自定义站点地图提供程序作为其数据源

有谁能建议我如何根据数据库授权,以用户为基础显示菜单

此外,整个菜单仍应向所有用户显示,只有在您单击菜单节点后,他们才能确定是否有权访问该页面/节点


谢谢,您可以利用站点地图上的角色来定义将显示的菜单。

这里有两件事。如果您有节点的静态集合,然后希望根据用户可访问性显示/隐藏它们,则应该覆盖 方法来判断给定节点是否适用于当前用户,该用户可从给定的HttpContext访问


在这种情况下,您的节点集合/层次结构会根据每个用户进行更改,然后尝试覆盖以为当前用户加载不同的节点。但是,我有点怀疑StaticSiteMapProvider在这种情况下是否是正确的基类。您可能需要从SiteMapProvider重写。

要创建菜单吗dynamically@NDC:基本上是的,但是我没有使用asp角色Hanks Davis,但是编写此代码的开发人员决定不使用角色,他已经基于菜单项和sitemapnodes@jpgooner,重写IsAccessibleToUser方法-请参阅我的答案。自定义站点地图提供程序类最初确实重写了staticSiteMapProvider,但后来我将其更改为重写器SiteMapProvider,但仍然没有joy?,而且我仍然希望所有节点都显示。。。。