0

在我的 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 路由一起工作?我做错什么了吗?有什么解决方法吗?

谢谢你的帮助!

4

1 回答 1

1

我已经在 ASP.NET 论坛 ( http://forums.asp.net/t/1563781.aspx ) 上回答了这个问题,但答案是否定的。但是,您可以自定义提供程序;请参阅论坛帖子中的代码。

于 2010-06-02T08:09:23.170 回答