我注意到在从后台填充角色列表时没有询问提供者,并得出结论,不仅没有调用 getallroles,it was never implemented.
相反,会在配置单元中查询角色列表。
尽管声称从 5.1 开始重新加入会员服务,但它存在一些特别严重的限制。
如果您致力于 5.1 并且需要自定义角色提供程序,那么您需要想出一个偶尔将角色同步到 Umbraco 的解决方案。
如果你不需要自定义的roleprovider,那么你可以查询hive来拉取相关的内容。特殊的网址是:
security://profiles
Hive Membership Wrapper 用于存储配置文件数据。个人资料数据是无法存储在 ASP.Net MembershipProvider 中的任何成员/用户的附加数据
security://user-groups
用于存储后台用户组/角色的数据。
security://member-groups
用于存储成员组/角色的数据。
security://member-types
用于存储成员类型的架构数据
security://membership-data
由 UmbracoMembershipProvider 用来存储 ASP.Net MembershipProvider 信息
security://users
用于查询后台用户的 Hive 成员提供程序包装器
security://members
用于查询 Umbraco 成员的 Hive 成员资格提供程序包装器
最后,请注意会员服务现在已被抽象化。 Umbraco 有一个全新的独立界面供会员使用。
您使用当前 IRoutableRequestContext 中可用的会员服务,而不是使用“基线”.net 成员提供程序和角色提供程序:
例如而不是使用 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();
}