安全修整是否适用于Web窗体路由?

时间:2010-05-31 10:09:10

标签: asp.net sitemap asp.net-4.0 asp.net-routing webforms-routing

在我的web.config中,我使用securityTrimmingEnabled="true"配置了SiteMapProvider,并在我的主母版页上绑定了asp:Menu asp:SiteMapDataSource。另外,我已经配置了对子文件夹“Admin”中所有页面的限制访问(使用此子文件夹中的另一个web.config)。

如果我将sitemapNode放在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");

但是当我在SiteMap文件中使用这个route-URL时......

<siteMapNode url="Administration/Home" title="Administration" description="" >

...安全修整似乎不起作用:菜单项对所有用户都可见。 (但仍然限制对页面的访问,因此非管理员用户选择菜单项不会导航到受限页面。)

问题:到目前为止,我是否有任何设置可以使用ASP.NET 4.0 Web窗体中的URL路由进行安全修整?我做错什么了吗?有没有解决办法?

谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

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