새로운 Asp.net ID 보안 프레임 워크 사용에 대한 문서는 거의 없습니다.
새로운 역할을 만들고 여기에 사용자를 추가 할 수있는 방법을 모았습니다. 다음을 시도했습니다. ASP.NET ID에 역할 추가
이 블로그에서 정보를 얻은 것 같습니다. asp.net ID를 사용하여 간단한 할 일 애플리케이션을 구축하고 사용자를 할 일과 연결
모델이 변경 될 때마다 실행되는 데이터베이스 이니셜 라이저에 코드를 추가했습니다. RoleExists다음 오류와 함께 함수에서 실패합니다 .
System.InvalidOperationExceptionmscorlib.dll에서 발생했습니다. 엔티티 유형 IdentityRole이 현재 컨텍스트에 대한 모델의 일부가 아닙니다.
protected override void Seed (MyContext context)
{
    var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
    var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
    // Create Admin Role
    string roleName = "Admins";
    IdentityResult roleResult;
    // Check to see if Role Exists, if not create it
    if (!RoleManager.RoleExists(roleName))
    {
        roleResult = RoleManager.Create(new IdentityRole(roleName));
    }
}
도움을 주시면 감사하겠습니다.
답변
MyContext수업의 다음 서명이 있는지 확인하십시오.
public class MyContext : IdentityDbContext<MyUser>
또는
public class MyContext : IdentityDbContext
코드는 수정없이 나를 위해 작동합니다!
답변
여기 있습니다 :
var roleManager = new RoleManager<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
   if(!roleManager.RoleExists("ROLE NAME"))
   {
      var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
      role.Name = "ROLE NAME";
      roleManager.Create(role);
    }
답변
다음은 ASP.NET Identity를 사용하여 역할을 만들고, 역할을 수정하고, 역할을 삭제하고, 역할을 관리하는 방법을 설명하는 전체 문서입니다. 여기에는 사용자 인터페이스, 컨트롤러 메서드 등도 포함됩니다.
http://www.dotnetfunda.com/articles/show/2898/working-with-roles-in-aspnet-identity-for-mvc
이 helpls 희망
감사
답변
에서는 ASP.NET 5 rc1-final다음을 수행했습니다.
만들어진 ApplicationRoleManager ( ApplicationUser템플릿 으로 생성 된 것과 유사한 방식 )
public class ApplicationRoleManager : RoleManager<IdentityRole>
{
    public ApplicationRoleManager(
        IRoleStore<IdentityRole> store,
        IEnumerable<IRoleValidator<IdentityRole>> roleValidators,
        ILookupNormalizer keyNormalizer,
        IdentityErrorDescriber errors,
        ILogger<RoleManager<IdentityRole>> logger,
        IHttpContextAccessor contextAccessor)
        : base(store, roleValidators, keyNormalizer, errors, logger, contextAccessor)
    {
    }
}
에 ConfigureServices 에 Startup.cs, 나는으로 roleManager로 추가
services.
    .AddIdentity<ApplicationUser, IdentityRole>()
    .AddRoleManager<ApplicationRoleManager>();
새 역할을 생성하려면 Configure다음 에서 호출하십시오 .
public static class RoleHelper
{
    private static async Task EnsureRoleCreated(RoleManager<IdentityRole> roleManager, string roleName)
    {
        if (!await roleManager.RoleExistsAsync(roleName))
        {
            await roleManager.CreateAsync(new IdentityRole(roleName));
        }
    }
    public static async Task EnsureRolesCreated(this RoleManager<IdentityRole> roleManager)
    {
        // add all roles, that should be in database, here
        await EnsureRoleCreated(roleManager, "Developer");
    }
}
public async void Configure(..., RoleManager<IdentityRole> roleManager, ...)
{
     ...
     await roleManager.EnsureRolesCreated();
     ...
}
이제 규칙을 사용자에게 할당 할 수 있습니다.
await _userManager.AddToRoleAsync(await _userManager.FindByIdAsync(User.GetUserId()), "Developer");
또는 Authorize속성에 사용
[Authorize(Roles = "Developer")]
public class DeveloperController : Controller
{
}
답변
위의 Peters 코드에 대한 개선으로 다음을 사용할 수 있습니다.
   var roleManager = new RoleManager<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
   if (!roleManager.RoleExists("Member"))
            roleManager.Create(new IdentityRole("Member"));
답변
EF 6.0에서 Peter Stulinski와 Dave Gordon의 코드 샘플을 사용할 때 내 응용 프로그램이 시작시 중단되었습니다. 나는 변했다 :
var roleManager = new RoleManager<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
…에
var roleManager = new RoleManager<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>(new RoleStore<IdentityRole>(**context**));
시드 메서드에서 다른 인스턴스를 인스턴스화하지 않으려는 경우 의미가 ApplicationDBContext있습니다. 이것은 내가 Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());생성자에 있었다는 사실에 의해 복합되었을 수 있습니다.ApplicationDbContext
답변
역할보기 모델
public class RoleViewModel
{
    public string Id { get; set; }
    [Required(AllowEmptyStrings = false)]
    [Display(Name = "RoleName")]
    public string Name { get; set; }
}
컨트롤러 방식
    [HttpPost]
    public async Task<ActionResult> Create(RoleViewModel roleViewModel)
    {
       if (ModelState.IsValid)
       {
           var role = new IdentityRole(roleViewModel.Name);
           var roleresult = await RoleManager.CreateAsync(role);
           if (!roleresult.Succeeded)
           {
               ModelState.AddModelError("", roleresult.Errors.First());
               return View();
           }
           return RedirectToAction("some_action");
       }
       return View();
    }
