2

システム内のすべてのメンバーシップロールとシステム内のすべてのメンバーを取得したいと思います。

使ってみました

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

と他のいくつかが、それらはすべて実装されていないエラーをスローします。

IISExpressとSQLExpressでローカルに実行されているV5.1のクリーンなVisualStudioUmbracoテンプレートを使用しています。

どんな考えでも大歓迎です。

4

1 に答える 1

1

私は、プロバイダーがバックオフィスから役割リストを作成する際に照会されなかったことに気づき、getallrolesが呼び出されなかっただけでなく、実装されなかったという結論に達しました。

代わりに、役割のリストについてハイブが照会されます。

メンバーシップサービスは5.1から再び組み込まれたという主張にもかかわらず、いくつかの特に深刻な制限があります。

5.1に取り組んでいて、カスタムのロールプロバイダーが必要な場合は、ロールをUmbracoに同期するソリューションを考え出す必要があります。

カスタムロールプロバイダーが必要ない場合は、ハイブにクエリを実行して関連コンテンツをプルできます。特別なURLは次のとおりです。

security:// profiles

HiveMembershipWrapperによってプロファイルデータを保存するために使用されます。プロファイルデータは、ASP.NetMembershipProviderに保存できないメンバー/ユーザーの追加データです。

security:// user-groups

バックオフィスのユーザーグループ/ロールのデータを保存するために使用されます。

security:// member-groups

メンバーのグループ/ロールのデータを保存するために使用されます。

security:// member-types

メンバータイプのスキーマデータを格納するために使用されます

security:// membership-data

UmbracoMembershipProviderがASP.NetMembershipProvider情報を格納するために使用します

security:// users

バックオフィスユーザーのHiveメンバーシッププロバイダーラッパーを照会するために使用されます

セキュリティ://メンバー

UmbracoメンバーのHiveメンバーシッププロバイダーラッパーを照会するために使用されます

最後に、メンバーシップサービスが抽象化されていることに注意してください。Umbracoのメンバーシップを引き継ぐための完全に新しい別個のインターフェースがあります。

'baseline' .netメンバーシッププロバイダーとロールプロバイダーを使用するのではなく、現在のIRoutableRequestContextで利用可能なメンバーシップサービスを使用します。

たとえば、Membership.ValidateUser()を使用するのではなく、提供されたMembershipProviderをラップする_context.Application.Security.Members.Validate()を使用します。

幸運を祈ります。そして、コミュニティがこのリリースを一緒に踏みにじるので、あなた自身の発見を投稿してください。

編集:メンバーの役割のリストを取得するための例

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 に答える