我有一个具有高度精细访问权限的网站,因此需要许多 web.config 文件。问题是我想修剪菜单,以便只有某些用户才能访问某些文件夹。我在站点地图中启用了修剪和设置角色,但是当我访问该页面时,菜单不显示,因为我有权查看不在子文件夹中的默认页面。当我在子文件夹中键入页面的 url 时,我可以访问。
我应该如何处理:
- 每个 web.config 文件的站点地图 - 不知道这将如何工作
删除子 web.config 文件以仅使用一个
有没有其他建议。
谢谢
我有一个具有高度精细访问权限的网站,因此需要许多 web.config 文件。问题是我想修剪菜单,以便只有某些用户才能访问某些文件夹。我在站点地图中启用了修剪和设置角色,但是当我访问该页面时,菜单不显示,因为我有权查看不在子文件夹中的默认页面。当我在子文件夹中键入页面的 url 时,我可以访问。
我应该如何处理:
删除子 web.config 文件以仅使用一个
有没有其他建议。
谢谢
您可以使用 MembershipUser、RoleManager 类和 regsql.exe 工具来生成您的安全数据库。
或者使用 IPrincipal 和 IIdentity 创建特定的安全库。
您不需要每个 web.config 文件的站点地图。当使用带有菜单控件和 SitemapDataSource 的站点地图时,ASP.NET 将确定您是否可以通过您配置的 MembershipProvider 和/或 RoleProvider 访问站点地图中命名的每个页面,如果您有权访问,站点地图条目将显示在菜单。
请注意,如果您无法访问站点地图中某个项目的所有父项,您将无法看到该项目。您可以使用 StartingNodeUrl 配置 SitemapDataSource 以更改菜单根在站点地图中的设置位置。
至于为什么您在菜单中看不到默认页面,如果您可以通过直接输入 URL 访问默认页面,那么问题很可能是您没有正确设置菜单或 SitemapDataSource。如需帮助,请参阅:http: //msdn.microsoft.com/en-us/library/ms227441.aspx 和http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols .menu.aspx#binding_to_data
如果您需要额外的指导,我建议您尝试缩小问题的确切原因,因为会员资格、角色、站点地图和菜单是一组相当广泛的主题,并且可能会出现大量陷阱。在没有安全调整的情况下启动并运行您的菜单,并在尝试链接两者之前验证成员资格和角色是否正常工作。
回答了我的问题,在这里找到了解决方案: 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>
注意这一行: