Навигация по сайту в ASP.NET 2.0 - Ограничение доступа к пунктам карты сайта

ОГЛАВЛЕНИЕ

Ограничение доступа к пунктам карты сайта

Поскольку определенные области сайта могут быть доступны только авторизированным пользователям, то у нас появляется дилемма, связанная с навигацией по сайту. Включать ли страницы, которые доступны только авторизированным пользователям, в карту сайта? Если мы сделаем это, то всем пользователям будут видны страницы, имеющие ограничение по доступу в элементах Menu либо TreeView. Почему стоит отображать ссылки на страницы для пользователей, которые не имеют к ним доступа? Если мы исключим данные страницы из карты сайта, то те пользователи, которым разрешен просмотр данных страниц, не смогут с легкостью перейти  на них, поскольку данные страницы не будут являться частью карты сайта и тем самым они не будут отображены в элементах TreeView или Menu сайта!

К счастью, навигация в ASP.NET 2.0 предоставляет такую услугу, как ограничение прав (security trimming).  При получении информации о карте сайта при настроеном ограничении в правах (security trimming) пользователю доступны только те узлы карты сайта, которые ему разрешено посещать. Это означает, что элементы TreeView либо Menu на сайте будут содержать только те, которые доступны данному пользователю. Читайте далее, чтобы узнать больше об этом!

Начнем с настройки Membership и ролей (опционально) в ASP.NET 2.0

Поскольку ограничение прав в навигации сайта  лежит в основе построения карты сайта на пользователе, который посещает страницу, а также на настройках авторизации, указанных в карте сайта для страниц, то перед тем как исследовать функцию ограничения прав (security trimming), вам нужно будет настроить сайт на использование такой службы в ASP.NET 2.0,  как  Membership.  (Вы также можете использовать роли в вашем сайте и создать систему авторизации, основанную на ролях, но это не является обязательным при изучении принципа ограничения прав (security trimming)). Тема настройки сайта на использование  Membership и ролей (Roles) выходит за рамки данной статьи.

Приложение в конце данной статьи включает в себя пример ограничения прав (security trimming) по карте для сайта, который реализует службу  Membership и ролей (Roles), и который вы можете использовать в том случае, если не хотите вручную настраивать свойства Membership и ролей на свежем веб-сайте. В частности, веб-сайт, приложенный к данной статье, содержит две роли, администратор (Administrator) и тестер (Tester), с четырьмя пользователями:

  • Superman - в качестве администратора и тестера
  • Admin - в качестве администратора
  • Mr. Tester - в качестве тестера
  • Average User - не обладающий ни одной ролью

Более того, в проекте присутствуют три папки - Admin, Tester и AuthUsersOnly. Первые два каталога были настроены таким образом, что к ним доступ имели только пользователи, обладающие ролями администратора (Administrator) и тестера (Tester), соответственно. Только пользователи с определенными правами имеют доступ к каталогу AuthUsersOnly.