Разное asp: меню на пользовательской основе - PullRequest
0 голосов
/ 12 апреля 2011

У меня есть база данных Oracle, в которой хранятся меню и пользовательские данные для локальной сети.

Данные включают в себя, какие пользователи имеют доступ к каким страницам.

Первоначально я создал класс, который расширил класс StaticSiteMapProvider, однако, когда это вошло в среду тестирования, я обнаружил, что он кэшируется для всего сайта (а не для пользователя). После прочтения в режиме онлайн на различных форумах было предложено наследовать от SiteMapProvider, поскольку это позволило бы мне иметь раздельный экземпляр элемента SiteMapProvider и ASP: MENU для пользователя, однако это все еще не решило проблему .

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

Кто-нибудь может подсказать, как я могу отображать меню на основе пользователя, основываясь на авторизации базы данных?

Кроме того, все меню должно отображаться для всех пользователей, только после того, как вы нажмете на узел меню, они узнают, имеют ли они доступ к этой странице / узлу.

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 апреля 2011

Здесь есть две вещи.Если у вас есть статическая коллекция узлов, а затем вы хотите показать / скрыть их в зависимости от доступности пользователя, вам следует переопределить метод IsAccessibleToUser , чтобы указать, является ли данный узел применимым для текущего пользователя (доступен из заданного HttpContext).

В случае, если коллекция / иерархия узлов меняется для каждого пользователя, попробуйте переопределить BuildSiteMap , чтобы загрузить разные узлы для текущего пользователя.Тем не менее, я немного сомневаюсь, является ли StaticSiteMapProvider правильным базовым классом в этом случае.Вероятно, вам нужно переопределить с SiteMapProvider.

0 голосов
/ 12 апреля 2011

Вы можете использовать Роли в SiteMap, чтобы определить, какое меню появится.

...