MVCSiteMapProvider: не кликабельные узлы с включенной подстройкой безопасности

Я использую MVCSiteMapProvider, v4.6.1

Это моя проблема: у меня есть раздел моего меню, который виден только администраторам. Я достигаю этого, позволяя подрезать параметры безопасности и декорировать мои контроллеры и / или методы контроллера, чтобы определить критерии подрезки.

AdminTasks

  • добавлять
  • редактировать
  • Удалить

Мне нужно сделать так, чтобы узел "AdminTasks" не щелкался, но оставался видимым только для администраторов.

Поведение, которое я наблюдаю, состоит в том, что, если я отмечу "AdminTasks" как clickable="false" в карте сайта узел отображается для всех, независимо от того, является ли пользователь администратором или нет. Похоже, в узлах отмечены clickable='false' Обрезка безопасности не выполняется.

Я предполагаю, что, не исследуя слишком много кода, это когда узел помечен clickable='false'SiteMapProvider не пытается разрешить какой-либо маршрут (поскольку он все равно не нужен для целей навигации); но при этом он не проверяет декорации в контроллерах, поэтому пропускает подстройку безопасности.

Правильно ли мое предположение? Есть ли какой-нибудь способ иметь не кликабельный узел, который все еще урезан безопасностью?

Спасибо

1 ответ

Не кликабельные "группирующие" узлы не представляют действия контроллера, поэтому не было бы разумного способа управления безопасностью на них с помощью AuthorizeAttribute.

Однако вы можете использовать TrimEmptyGroupingNodesVisibilityProvider, чтобы сделать не кликабельный узел невидимым, когда в нем нет доступных узлов, вложенных в него. Поэтому, если текущий пользователь не имеет разрешения ни для одного из дочерних узлов узла "Задачи администратора", узел "Задачи администратора" будет скрыт.

<mvcSiteMapNode title="Admin Tasks" clickable="false" visibilityProvider="MvcSiteMapProvider.TrimEmptyGroupingNodesVisibilityProvider, MvcSiteMapProvider">

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

Другие вопросы по тегам