ロール内のすべてのユーザーの一覧を取得する方法はありますか。 Roles.GetUsersInRoleで可能になる前に、新しいアイデンティティでこのようなものは見つかりませんでした。ASP.NET ID:ロール内のすべてのユーザーを取得する
7
A
答えて
5
0
Entity Frameworkを使用できますが、Asp.Net Identity 1.0はまだ使用できません。アイデンティティ2.0のリリースを待たなければなりません。
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings("DefaultConnection").ConnectionString)) {
string queryString = "SELECT AspNetUsers.UserName FROM dbo.AspNetUsers INNER JOIN dbo.AspNetUserRoles ON " + "AspNetUsers.Id=AspNetUserRoles.UserId WHERE AspNetUserRoles.RoleID='" + id + "'";
SqlCommand command = new SqlCommand(queryString, connection);
command.Connection.Open();
List<string> @out = null;
dynamic reader = command.ExecuteReader();
while (reader.Read()) {
if (@out == null) @out = new List<string>();
@out.Add(reader.GetString(0));
}
return @out;
}
+0
IDを持つEntity Frameworkを使用する方が、SqlConnectionsとSqlCommandsにドロップする方が良いです。 IMO –
10
私は組み込みの方法は見ませんでしたが、実装するのはかなり簡単です。
public IQueryable<User> GetUsersInRole(string roleName)
{
return from user in Users
where user.Roles.Any(r => r.Role.Name == roleName)
select user;
}
SQLのそれの出力は、合理的なように見えた:
SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Email] AS [Email],
[Extent1].[EmailConfirmed] AS [EmailConfirmed],
[Extent1].[PasswordHash] AS [PasswordHash],
[Extent1].[SecurityStamp] AS [SecurityStamp],
[Extent1].[PhoneNumber] AS [PhoneNumber],
[Extent1].[PhoneNumberConfirmed] AS [PhoneNumberConfirmed],
[Extent1].[TwoFactorEnabled] AS [TwoFactorEnabled],
[Extent1].[LockoutEndDateUtc] AS [LockoutEndDateUtc],
[Extent1].[LockoutEnabled] AS [LockoutEnabled],
[Extent1].[AccessFailedCount] AS [AccessFailedCount],
[Extent1].[UserName] AS [UserName]
FROM [dbo].[AspNetUsers] AS [Extent1]
WHERE EXISTS (SELECT
1 AS [C1]
FROM [dbo].[AspNetUserRoles] AS [Extent2]
INNER JOIN [dbo].[AspNetRoles] AS [Extent3] ON [Extent2].[RoleId] = [Extent3].[Id]
WHERE ([Extent1].[Id] = [Extent2].[UserId]) AND ([Extent3].[Name] = @p__linq__0)
)
0
これは新しいMVC 5 ASP.NET Identity
のためである:
var managerRole = TMRoles.GetIdentityRole(TMRoles.Manager);
var managers = managerRole.Users;
public class TMRoles
{
private static RoleManager<IdentityRole> RoleManager =
new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new TMContext()));
public static string Manager { get { return "Manager"; } }
public static IdentityRole GetIdentityRole(string roleName)
{
return RoleManager.FindByName(roleName);
}
}
4
何らかの理由で、非常に私は自分のアプリケーション固有のUserManagerでこのメソッドを持っています上記の@ChoptimusPrimeで提案された素晴らしいクエリは、ASP.NET Identity 2.2.1で私のためにコンパイルされませんでした。私は、拡張機能を書かれている:
public static IQueryable<User> GetUsersInRole(DbContext db, string roleName)
{
if (db != null && roleName != null)
{
var roles = db.Roles.Where(r => r.Name == roleName);
if (roles.Any())
{
var roleId = roles.First().Id;
return from user in db.Users
where user.Roles.Any(r => r.RoleId == roleId)
select user;
}
}
return null;
}
関連する問題
- 1. ロール内のすべてのユーザーを取得します。 ASP.NETアイデンティティは
- 2. Asp.Net IDでユーザーのロール名を取得する方法
- 3. ユーザーのロールまたはすべてのロールを取得する
- 4. ドメイン内のすべてのユーザーIDを取得する
- 5. Sitefinityデータベースからすべてのユーザーとロールを取得する
- 6. ASP.NET MVC 5-特定のユーザーのロールを取得する
- 7. 拡張プロパティ値を持つロール内のすべてのユーザーを検索する方法Asp.net ID 2
- 8. リストのユーザーのロール名asp.net ID
- 9. Laravel 5.2ロール(Entrust)を持つすべてのユーザーを取得
- 10. ASP.netはロール内のユーザーです
- 11. SimpleMembership:ロール内のユーザーのリストを取得する方法は?
- 12. ASP.NET WebApi 2サーバー内のすべてのアクティブなセッション(ユーザー)を取得する
- 13. firebaseからすべてのユーザーIDのデータを取得する
- 14. FacebookユーザーのユーザーIDを取得する
- 15. グループ内のすべてのユーザーを取得するPHP/LDAP
- 16. ASP.NETフォーム認証 - ユーザーIDの取得
- 17. Active Directoryはロール内のユーザーを取得します
- 18. asp.netアプリケーション内のすべてのロールを取得しようとしているが、エラー
- 19. ローカルネットワーク内のASP.NETイントラネットページにアクセスするユーザーのユーザー名を取得
- 20. OpenIddictトークン内のユーザーIDを取得する応答
- 21. asp.net SQLメンバーシップ・プロバイダのIDからロールを取得する方法は?
- 22. ASP.NET MVC 3:インターネットアプリケーション内のユーザーとロールを管理する
- 23. ASP.NET ID 2のロールがクッキー内にあるようです
- 24. androidのメニューグループ内のすべてのアイテムのIDを取得
- 25. .net mvc3ユーザーのロールを取得
- 26. ASP.NET IDを追加するロール
- 27. asp.net IDを使用してユーザー登録の現在のDateTimeを取得する
- 28. Drupalノード内のすべてのComment IDを取得
- 29. ロールとOOP継承を使用してASP.NET IDユーザーを管理する方法
- 30. ASP.NET IDから直接ユーザーの手書きIDを取得する方法
データストアが実際にあなたが受け入れているアイデンティティを支えているものは何でもへの繰り返しのリモートクエリを含むロールのメンバーを、発見する驚異的に高価になることが - でも、これらの店舗であれば* *そのようなクエリをサポートします。彼らの頭の上で物事を変えてみてください - なぜあなたは役割のすべてのメンバーを知る必要がありますか? (あなたのシステムにこの情報があるとすぐに期限切れになることを覚えておいてください) –
@Damien_The_Unbeliever:古いメンバーシップから新しいアイデンティティにアプリケーションを移行する必要があります。たとえば、すべてのユーザーに電子メールを送信するには、管理者ロールのユーザーリストを作成する必要があります。今、私はそれについてのデータベースクエリを想像しようとしていて、内部結合が1つの単純なクエリのように見えます。たぶん私はたくさん迷っていますが、なぜこれが驚くほど高価なのか分かりません。ですから、私はいつもdbコンテキストを通してこれを行うことができますが、なぜフレームワークがこの機能を提供しないのか不思議です。 – graycrow
私はそれが高価かもしれないと言った - アイデンティティシステムの使用のシナリオのすべてがSQLデータベースに格納された役割を持っているわけではありません。 –