0

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

数据包括哪些用户可以访问哪些页面。

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

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

谁能建议我如何在数据库授权的驱动下基于用户显示菜单?

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

谢谢

4

2 回答 2

0

这里有两件事。如果您有节点的静态集合,然后您想根据用户可访问性显示/隐藏它们,那么您应该重写IsAccessibleToUser 方法以判断给定节点是否适用于当前用户(可从给定的 HttpContext 访问)。

如果您的节点集合/层次结构按用户更改,然后尝试覆盖BuildSiteMap为当前用户加载不同的节点。但是,我有点怀疑 StaticSiteMapProvider 在这种情况下是否是正确的基类。可能您需要覆盖 from SiteMapProvider

于 2011-04-12T09:05:14.497 回答
0

您可以使用 SiteMap 上的角色来定义将出现的菜单。

于 2011-04-12T08:59:08.870 回答