我的网站具有高度粒度化的访问权限,因此需要许多web.config文件。问题是我想修剪菜单,以便只有某些用户才能访问某些文件夹。我已在站点地图中启用了修剪和设置角色,但是当我访问该页面时,菜单未显示,因为我被授权查看不在子文件夹中的默认页面。 当我在子文件夹中键入页面的URL时,我有权访问。
我该如何处理:
删除子web.config文件以仅使用单个文件
还有其他建议。
由于
答案 0 :(得分:0)
您可以使用MembershipUser,RoleManager类和regsql.exe工具生成安全数据库。
或者使用IPrincipal和IIdentity创建特定的安全库。
答案 1 :(得分:0)
您不需要每个web.config文件的站点地图。将sitemap与菜单控件和SitemapDataSource一起使用时,ASP.NET将确定您是否可以通过已配置的MembershipProvider和/或RoleProvider访问站点地图中指定的每个页面,如果您有访问权限,则会显示站点地图条目菜单。
请注意,如果您无法访问站点地图中某个项目的所有父项,则您将无法看到该项目。您可以使用StartingNodeUrl配置SitemapDataSource,以更改在站点地图中设置菜单根目录的位置。
至于您没有在菜单中看到默认页面的原因,如果您可以通过直接输入URL来访问默认页面,那么问题很可能是您没有正确设置Menu或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
如果您需要其他指导,我建议您尝试缩小问题的确切原因,因为会员资格,角色,站点地图和菜单是一组非常广泛的主题,并且可能会出现大量陷阱。在没有安全修整的情况下启动并运行菜单,并在尝试链接两者之前验证成员身份和角色是否正常工作。
答案 2 :(得分:0)
回答我的问题在这里找到解决方案: ASP Forus
非常好,谢谢。
这太微不足道了。
所有需要做的就是确保站点地图中的顶级节点有一个网址。
<?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>
请注意以下这一行: