Мы создали новую «группу посетителей» в EPiServer 6r2 и хотим добавить класс css к тегу <body>
сайта, если пользователь состоит в этой группе, чтобы разные группы получали разный дизайн сайта. Я пытаюсь выяснить, находится ли текущий посетитель в соответствующей группе в коде позади файла мастер-страницы, чтобы добавить этот дополнительный класс, и не могу заставить приведенный ниже код вернуть что-либо, кроме false.
Я не уверен, что упомянутое имя роли — это имя, которое вы вводите в пользовательском интерфейсе CMS при добавлении группы посетителей.
Пол Смит записал в блог предлагаемое решение этой проблемы, но мне пока не удалось заставить его возвращать что-либо, кроме false
, и, судя по единственному комментарию к статье в блоге, я не одинок. Пример кода № 1 по этой ссылке (это тот, который я использую):
using EPiServer.Personalization.VisitorGroups;
...
bool match = EPiServer.Security.PrincipalInfo.CurrentPrincipal
.IsInRole("My Visitor Group", SecurityEntityType.VisitorGroup);
Я нашел руководство разработчика по поставщикам членства и ролей, в котором указано, что replacePrincipal
должно быть установлено на true
, чтобы был установлен правильный участник. Я проверил, и это уже относится к моему конфигу.
Документация
- EPiServer 7 doc
Как ни странно, я искал документацию по 6r2 на сайте http://sdk.episerver.com/ и не смог найти документацию. для IPrincipalExtensions вообще, хотя я вижу класс в браузере объектов в 6.2. в моем слн. Детали: Сборка EPiServer.ApplicationModules
- C:\Windows\assembly\GAC_MSIL\EPiServer.ApplicationModules\6.2.267.1__8fe83dea738b45b7\EPiServer.ApplicationModules.dll
- public static bool IsInRole(this System.Security.Principal.IPrincipal principal, string role, EPiServer.Security.SecurityEntityType type)
Член группы EPiServer.Personalization.VisitorGroups.IPrinicipalExtensions
Пожалуйста, прокомментируйте, если вы обнаружите ошибки или я что-то пропустил, поскольку кодирование для EPiServer - это что-то вроде тумана войны, и я немного устал от сражений.