0

在我的web.config中,我已經配置了一個帶有securityTrimmingEnabled="true"的SiteMapProvider,並且在我的主母版頁上是一個asp:Menu控件綁定到一個asp:SiteMapDataSource。另外,我已配置對子文件夾「Admin」中的所有頁面的限制訪問權限(使用此子文件夾中的另一個web.config)。安全修整與Web表單路由一起工作嗎?

如果我把一個在的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"); 

但是,當我使用站點地圖文件這條路線,網址...

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

...似乎安全修整不起作用:菜單項對所有用戶都可見。 (訪問頁面仍然受到限制,因此非管理員用戶選擇菜單項不會導航到受限制的頁面。)

問題:是否有任何設置我至今錯過了使安全修整工作在ASP.NET 4.0 Web窗體中使用URL路由?我做錯什麼了嗎?有沒有解決方法?

謝謝你的幫忙!

回答

1

我已經在ASP.NET論壇(http://forums.asp.net/t/1563781.aspx)上回答了這個問題,但答案是否定的。但是,您可以自定義提供者;請參閱論壇帖子中的代碼。

+0

謝謝,偉大的解決方案! – Slauma 2010-06-03 10:24:09