В моем 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? Я сделал что-то не так? Есть ли какая-нибудь работа?
Благодарим за помощь!
Спасибо, отличное решение! – Slauma