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