В моем web.config я настроил SiteMapProvider с securityTrimmingEnabled="true"
, а на главной странице есть элемент управления asp:Menu
, связанный с asp:SiteMapDataSource
.Кроме того, я настроил ограниченный доступ ко всем страницам в подпапке «Admin» (используя другой web.config в этой подпапке).
Если я поместил sitemapNode в Web.sitemap
...
<siteMapNode url="~/Admin/Default.aspx" title="Administration" description="" >
... только пользователи с ролью «Администратор» будут иметь пункт меню, связанный с этим siteMapNode.Так что это работает нормально и по назначению.
Теперь я определил маршрут URL в Global.asax для сопоставления физического файла с новым URL:
System.Web.Routing.RouteTable.Routes.MapPageRoute("AdminHomeRoute",
"Administration/Home", "~/Admin/Default.aspx");
Но когда я использую этоURL-адрес маршрута в файле SiteMap ...
<siteMapNode url="Administration/Home" title="Administration" description="" >
... кажется, что обрезка безопасности не работает: пункт меню виден всем пользователям.(Однако доступ к странице все еще ограничен, поэтому выбор пункта меню пользователями, не являющимися администраторами, не приводит к переходу на страницу с ограниченным доступом.)
Вопрос: есть ли какие-либо настройки, которые я пропустил до сих пор для обеспечения безопасности?обрезка работы с URL-маршрутизацией в ASP.NET 4.0 веб-форм?Я сделал что-то неправильно?Есть ли обходной путь?
Спасибо за помощь!