私はASP.NET MVC 5でアプリケーションを開発していますが、私はEntity Frameworkを使用しています。私は自分のプロジェクトの開始としてVisual Studioで提供されているテンプレートプロジェクトを使用しています。ユーザーとロールのViewModelを作成して、そこにあるすべてのロールに対してユーザーリストを表示したいと考えています。ASP MVCユーザーとロールのリスト
ベースのプロジェクトは、私には意味をなさないテーブルAspNetUsers
とAspNetUserRoles
が含まれています。私はidentity
によって提供されたRoleManager
クラスを使用して役割を追加し、その役割にユーザーを追加することができました。
protected override void Seed(Project.Models.ApplicationDbContext context)
{
var roleStore = new RoleStore<IdentityRole>(context);
var roleManager = new RoleManager<IdentityRole>(roleStore);
const string roleName = "admin";
var role = roleManager.FindByName(roleName);
if (role == null)
{
role = new IdentityRole(roleName);
var roleresult = roleManager.Create(role);
}
var rolesForUser = userManager.GetRoles(user.Id);
if (!rolesForUser.Contains(role.Name))
{
var result = userManager.AddToRole(user.Id, role.Name); // user.Id is retrieved accordingly
}
}
これはすべて動作します。しかし、今私は実際にすべてのユーザーとそれらに対するロールをどのように見ることができるのか混乱しています。具体的には、AspNetUserRoles
のデータをモデルにバインドし、次にViewModelにバインドして、 ? (私はこれらのユーザーを管理するための管理パネルを作成しようとしています)。
私はおそらくIdentityRoles
クラスを拡張してAspNetRoles
のいくつかのコントロールを得ることができることを前提としていますか?しかし、IdentityUserRole
クラスもありますか?
私はこの問題の提案にアプローチする方法が非常に混乱しており、指針は高く評価されます。
はIdentityUser' 'からあなたのUserクラスを継承していますか?これが私の混乱の原因です。私は 'db.MyIdentityUser.Roles'によって' IdentityUserRoles'からロールのリストを取得できるようになりましたが、これは 'Role'オブジェクトではなくIDのリストとして返されます。 'IdentityRole'を' IdentityUser'に結びつける方法、具体的には 'Microsoft.AspNet.Identity'からどのようにこれらのクラスを実装できるのか、私は思っています。 – Toby
@Toby .....はいToby ... RoleProviderにGetRolesForUserという関数があり、そこではユーザーの役割を取得するLINQクエリを作成し、User.IsInRole( "ADMIN" )..... – Sudhanshu