ASP.NET MVC Identityキャラクター追加

2941 ワード

using Microsoft.AspNet.Identity;
public ActionResult AddRole(String name)
{   using (var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new IdentityDbContext())))
{
    
if (!roleManager.RoleExists(name))     {
      
roleManager.Create(new IdentityRole(name));
    
}
  
}
}





1、 App_Start\IdentityConfig.cs
public class ApplicationRoleManager : RoleManager<IdentityRole>
{
  public ApplicationRoleManager(IRoleStore<IdentityRole, string> roleStore) : base(roleStore)
  {
  }
  public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)
  {
    return new ApplicationRoleManager(new RoleStore<IdentityRole>(context.Get<ApplicationDbContext>()));
  }
}

2、 App_Start\Startup.Auth.cs app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
public void ConfigureAuth(IAppBuilder app)
{
  // 、 ,
  app.CreatePerOwinContext(ApplicationDbContext.Create);
  app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
  app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);
  app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
  ......
}

3、 , , RoleManager
private ApplicationRoleManager _roleManager;
public ApplicationRoleManager RoleManager
{
  get
  {
    return _roleManager ?? HttpContext.GetOwinContext().Get<ApplicationRoleManager>();
  }
  private set
  {
    _roleManager = value;
  }
}

、 。
var result = await RoleManager.CreateAsync(new IdentityRole(name));
var result = await RoleManager.UpdateAsync(role);
var result = await RoleManager.DeleteAsync(role);