Вопрос

У меня есть карта web.sitemap с включенной обрезкой безопасности, однако мне нужно скрыть пункт меню на основе роли на странице, у которой нет правил доступа в web.config.

т. е. у меня есть страница кампании, которая используется для просмотра существующих кампаний, а также для добавления новых кампаний, но я хочу, чтобы пункт меню «Новые кампании» был скрыт для анонимных пользователей.Я попытался добавить имя роли в атрибут roles в файле web.sitemap, но это не дало никакого эффекта.

Я уверен, что должен быть быстрый способ сделать это без изменения поставщика карты сайта, который является моим следующим портом захода.

Это было полезно?

Решение

Если это особый случай для анонимных пользователей, вы можете создать второй SiteMap.

Создайте новый файл WebAnon.sitemap.
Создайте новый поставщик карт сайта в файле web.config.

<add name="anonProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="WebAnon.sitemap" securityTrimmingEnabled="true"/>

Установите SiteMapDataSource SiteMapProvider свойство «anonProvider» в коде, если это анонимный пользователь.

Другие советы

В roles атрибут в <siteMapNode /> это список «разрешений», а не запретов.Создать/изменить соответствующий <location /> элемент в web.config, позволяющий разрешить аутентифицированным пользователям и запретить анонимность;например

<location path="campaigns.aspx">
 <system.web>
  <authorization>
   <allow users="*" />
   <deny users="?" />
  </authorization>
 </system.web>
</location>

Кстати, если вы используете участника и роли Windows, любые изменения в членстве в вашей группе не вступят в силу, пока вы не выйдете из системы, а затем снова не войдете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top