Umbraco 5 как получить все роли и пользователей
Я хочу получить все членские роли в системе и всех участников в системе.
Я пытался использовать
System.Web.Security.Roles.GetAllRoles();
System.Web.Security.Roles.GetUsersInRoles(roles[0]);
и пару других, но все они выбрасывают не реализованную ошибку.
Я использую чистый шаблон VisualStudio Umbraco V5.1, работающий локально на IIS Express и SQL Express.
Любые мысли будут высоко ценится.
1 ответ
Я отметил, что провайдера не запрашивали при заполнении списка ролей из бэк-офиса, и пришел к выводу, что не только не вызывались getallroles, но и никогда не выполнялись.
Вместо этого улей запрашивается список ролей.
Несмотря на утверждение о том, что сервисы членства снова были запущены, начиная с 5.1, у него есть некоторые особенно серьезные ограничения.
Если вы привержены 5.1 и вам нужен собственный поставщик ролей, вам нужно будет найти решение, которое иногда синхронизирует роли с Umbraco.
Если вам не нужен пользовательский поставщик ролей, вы можете запросить улей, чтобы получить соответствующий контент. Специальные URL-адреса:
безопасность: // профили
Используется для хранения данных профиля оболочкой Hive Membership Wrapper. Данные профиля - это дополнительные данные для любого члена / пользователя, которые не могут быть сохранены в ASP.Net MembershipProvider
безопасности: // пользовательские группы
Используется для хранения данных для групп / ролей пользователей бэк-офиса.
безопасности: //-членов группы
Используется для хранения данных по группам / ролям участников.
безопасность: // члены-типы
Используется для хранения данных схемы для типов элементов
безопасность: // членство данные
Используется UmbracoMembershipProvider для хранения информации ASP.Net MembershipProvider
безопасность: // пользователи
Используется для запроса оболочки поставщика членства Hive для пользователей бэк-офиса
безопасность: // Участники
Используется для запроса оболочки поставщика членства Hive для участников Umbraco
Наконец, имейте в виду, что сервисы членства теперь абстрагированы. Существует совершенно новый отдельный интерфейс для членства в Umbraco.
Вместо того чтобы использовать "базовый" поставщик членства.net и поставщика ролей, вы используете службу членства, доступную в текущем IRoutableRequestContext:
например, вместо использования Membership.ValidateUser(), вы должны использовать _context.Application.Security.Members.Validate(), который оборачивает предоставленный MembershipProvider.
Удачи, и опубликуйте свои собственные выводы, когда сообщество переходит этот выпуск вместе.
РЕДАКТИРОВАТЬ: пример для получения списка ролей участников
using (var securityUow = context.Application.Hive.OpenReader<ISecurityStore>())
{
return securityUow.Repositories.GetEntityByRelationType<UserGroup>
(
FixedRelationTypes.DefaultRelationType,
Umbraco.Framework.Security.Model.FixedHiveIds.MemberGroupVirtualRoot
).OrderBy(x => x.Name).ToList();
}