在我的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路由?我做錯什麼了嗎?有沒有解決方法?
謝謝你的幫忙!
謝謝,偉大的解決方案! – Slauma 2010-06-03 10:24:09