0

我有一个具有高度精细访问权限的网站,因此需要许多 web.config 文件。问题是我想修剪菜单,以便只有某些用户才能访问某些文件夹。我在站点地图中启用了修剪和设置角色,但是当我访问该页面时,菜单不显示,因为我有权查看不在子文件夹中的默认页面。当我在子文件夹中键入页面的 url 时,我可以访问。

我应该如何处理:

  1. 每个 web.config 文件的站点地图 - 不知道这将如何工作
  2. 删除子 web.config 文件以仅使用一个

  3. 有没有其他建议。

谢谢

4

3 回答 3

0

您可以使用 MembershipUser、RoleManager 类和 regsql.exe 工具来生成您的安全数据库。

或者使用 IPrincipal 和 IIdentity 创建特定的安全库。

于 2012-06-18T13:05:30.460 回答
0

您不需要每个 web.config 文件的站点地图。当使用带有菜单控件和 SitemapDataSource 的站点地图时,ASP.NET 将确定您是否可以通过您配置的 MembershipProvider 和/或 RoleProvider 访问站点地图中命名的每个页面,如果您有权访问,站点地图条目将显示在菜单。

请注意,如果您无法访问站点地图中某个项目的所有父项,您将无法看到该项目。您可以使用 StartingNodeUrl 配置 SitemapDataSource 以更改菜单根在站点地图中的设置位置。

至于为什么您在菜单中看不到默认页面,如果您可以通过直接输入 URL 访问默认页面,那么问题很可能是您没有正确设置菜单或 SitemapDataSource。如需帮助,请参阅:http: //msdn.microsoft.com/en-us/library/ms227441.aspxhttp://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols .menu.aspx#binding_to_data

如果您需要额外的指导,我建议您尝试缩小问题的确切原因,因为会员资格、角色、站点地图和菜单是一组相当广泛的主题,并且可能会出现大量陷阱。在没有安全调整的情况下启动并运行您的菜单,并在尝试链接两者之前验证成员资格和角色是否正常工作。

于 2012-06-18T14:28:02.633 回答
0

回答了我的问题,在这里找到了解决方案: ASP Forus

做得很好谢谢。

这太微不足道了。

需要做的就是确保站点地图中的顶部节点有一个 url。

    <?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
      <siteMapNode **url="~/"** title="Home" description="">
      <siteMapNode title="Home" url="~/Default.aspx"/>
      <siteMapNode title="About" url="~/About/About.aspx" />
      <siteMapNode title="Lists" url="~/Lists/Lists.aspx" />
  </siteMapNode>
  </siteMap>

注意这一行:

于 2012-06-19T08:00:42.757 回答