Проверка экстрасети Sitecore вошла в роли пользователя в HttpHandler - PullRequest
0 голосов
/ 04 марта 2012

Как получить роли для аутентифицированного зарегистрированного пользователя экстрасети в sitecore 6.4? Я пытаюсь проверить роли для ограничения доступа.

Sitecore.Context.User.Roles возвращается со значением по умолчанию \ Anonynous not extranet \ WebsiteUser.

ОБНОВЛЕНИЕ: При проверке ролей сразу после входа в систему все выглядит нормально. Однако, когда я проверяю роли из httphandler, Sitecore.Context.User.Roles теряется и по умолчанию устанавливается по умолчанию \ Anonynous.

Создание кода пользователя экстрасети:

using (new SecurityStateSwitcher(SecurityState.Disabled))
        {
            var domainUsername = Context.Domain.GetFullName(user.Email);
            Sitecore.Security.Accounts.User sitecoreUser = Sitecore.Security.Accounts.User.Create(domainUsername, user.Password);

            Database dbCore = Factory.GetDatabase("core");
            Item profileItem = dbCore.GetItem(CustomUserProfilePath);

            List<Role> roles = Sitecore.Context.Domain.GetRoles().Where(role => role.Name == "extranet\WebsiteUser").ToList();
            if (roles.Any())
            {
                sitecoreUser.Roles.Add(roles.First());
            }

            sitecoreUser.Profile.ProfileItemId = profileItem.ID.ToString();
            sitecoreUser.Profile.FullName = string.Format("{0} {1}", user.FirstName, user.LastName);
            sitecoreUser.Profile.Email = user.Email;
            sitecoreUser.Profile.Comment = "Created by the register system";
            sitecoreUser.Profile.Save();
        }

1 Ответ

0 голосов
/ 05 марта 2012

Теперь я нашел решение с помощью переписывания URL-адреса IIS7 вместо маршрутизации обработчика через web.config.При этом сохраняется Sitecore.Context, чтобы я мог проверять зарегистрированные роли пользователей.

...