2

我想获取系统中的所有成员角色和系统中的所有成员。

我试过使用

System.Web.Security.Roles.GetAllRoles();
System.Web.Security.Roles.GetUsersInRoles(roles[0]);

和其他几个,但他们都抛出未实现的错误。

我正在使用在 IIS Express 和 SQL Express 上本地运行的 V5.1 的干净 VisualStudio Umbraco 模板。

任何想法将不胜感激。

4

1 回答 1

1

我注意到在从后台填充角色列表时没有询问提供者,并得出结论,不仅没有调用 getallroles,而且从未实施过。

相反,会在配置单元中查询角色列表。

尽管声称从 5.1 开始再次加入会员服务,但它也有一些特别严重的限制。

如果您致力于 5.1 并且需要自定义角色提供程序,那么您需要提出一个偶尔将角色同步到 Umbraco 的解决方案。

如果您不需要自定义角色提供者,那么您可以查询配置单元以拉取相关内容。特殊网址是:

安全://配置文件

用于由 Hive Membership Wrapper 存储配置文件数据。配置文件数据是无法存储在 ASP.Net MembershipProvider 中的任何成员/用户的附加数据

安全://用户组

用于存储后台用户组/角色的数据。

安全://成员组

用于存储成员组/角色的数据。

安全://成员类型

用于存储成员类型的架构数据

安全://会员数据

由 UmbracoMembershipProvider 用于存储 ASP.Net MembershipProvider 信息

安全://用户

用于查询后台用户的 Hive 成员资格提供程序包装器

安全://成员

用于查询 Umbraco 成员的 Hive 成员资格提供程序包装器

最后,请注意会员服务现在已被抽象化。Umbraco 有一个全新的独立界面供会员使用。

您可以使用当前 IRoutableRequestContext 中可用的成员服务,而不是使用“基线”.net 成员提供程序和角色提供程序:

例如,您将使用包装所提供的 MembershipProvider 的 _context.Application.Security.Members.Validate() 而不是使用 Membership.ValidateUser()。

祝你好运,并在社区一起艰难完成此版本时发布您自己的任何发现。

编辑:获取成员角色列表的示例

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();

}
于 2012-05-19T21:49:13.270 回答