在我的web.config中,我配置了一个SiteMappRovider securityTrimmingEnabled="true" 在我的主页上是一个 asp:Menu 控制与 asp:SiteMapDataSource. 。此外,我还配置了对子文件夹“ admin”中所有页面的限制访问(使用此子文件夹中的另一个web.config)。

如果我将站点词放入 Web.sitemap...

<siteMapNode url="~/Admin/Default.aspx" title="Administration" description="" >

...只有角色“ admin”中的用户才能与该站点通用的菜单项有关。因此,这是正常工作的,并且按预期工作。

现在,我已经定义了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="" >

...似乎安全修剪不起作用:所有用户均可看到菜单项。 (不过,对页面的访问仍然受到限制,因此选择非Admin用户的菜单项不会导航到限制页面。)

问题:到目前为止,我是否错过了任何设置,以使安全修剪使用ASP.NET 4.0 Web表单中的URL路由?我做错什么了吗?有工作吗?

谢谢你的帮助!

有帮助吗?

解决方案

我已经在ASP.NET论坛上回答了这一点(http://forums.asp.net/t/1563781.aspx),但是答案是否定的。但是,您可以自定义提供商;在论坛帖子中查看代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top