在web.config中,我已使用
securityTrimmingEnabled="true"
在我的主页面上是
asp:Menu
控件绑定到
asp:SiteMapDataSource
. 此外,我还配置了对子文件夹“admin”中所有页面的受限访问(在此子文件夹中使用另一个web.config)。
如果我在
Web.sitemap
…
<siteMapNode url="~/Admin/Default.aspx" title="Administration" description="" >
…只有“admin”角色的用户才具有与该sitemapnode相关的菜单项。因此,这是正常的和预期的。
现在,我在global.asax中定义了一个URL路由,将物理文件映射到一个新的URL:
System.Web.Routing.RouteTable.Routes.MapPageRoute("AdminHomeRoute",
"Administration/Home", "~/Admin/Default.aspx");
但当我在站点地图文件中使用此路由URL时…
<siteMapNode url="Administration/Home" title="Administration" description="" >
…似乎安全修整不起作用:菜单项对所有用户都可见。(但是,对页面的访问仍然受到限制,因此非管理员用户选择菜单项不会导航到受限制的页面。)
问题:在ASP.NET 4.0 Web窗体中,是否有任何设置使安全修整与URL路由一起工作,这是迄今为止我遗漏的?我做错什么了吗?有什么工作吗?
谢谢你的帮助!