0

В моем 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? Я сделал что-то не так? Есть ли какая-нибудь работа?

Благодарим за помощь!

ответ

1

Я ответил на это на форумах ASP.NET (http://forums.asp.net/t/1563781.aspx), но ответа нет. Однако вы можете настроить поставщика; см. код в сообщении форума.

+0

Спасибо, отличное решение! – Slauma