使用Asp.net Identity删除角色

use*_*480 5 c# asp.net-mvc

有人可以向我描述如何使用asp.net身份删除角色.我尝试了以下,但它没有工作,我收到一个指定方法不支持错误:

public async Task DeleteRole(string role)
    {
        // delete role
        var roleStore = new RoleStore<IdentityRole>(new Context());
        await roleStore.DeleteAsync(new IdentityRole(role));


    }
Run Code Online (Sandbox Code Playgroud)

不确定这是指我的异步逻辑,还是特别是asp.net身份本身.然而,有人可以告诉我如何使这项工作正确.目前,asp.net的新身份系统几乎没有可用的文档.

Sor*_*ren 9

我知道这是一个老问题,但我尝试了一种不直接接触 store ( 或DbContext) 的方法。

我在 ASP.NET Core 2.1 中使用过它

var role = await _roleManager.FindByNameAsync(roleName);
var result = await _roleManager.DeleteAsync(role);
Run Code Online (Sandbox Code Playgroud)

不用说,它:

  • 删除分配给用户的角色 ->AspNetUserRoles
  • 删除角色的声明 ->AspNetRoleClaims
  • 删除角色本身 ->AspNetRoles


Ton*_*llo 8

Identity上下文(IdentityDbContext)包含角色存储.所以你会(假设AppDb是你的上下文):

var role = AppDb.Roles.Where(d => d.Name == "my role name").FirstOrDefault();
AppDb.Roles.Remove(role);
AppDb.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

您基本上将其视为正常的EntityFramework DbSet,它继承自IdentityDbContext.

  • 您正在使用API​​.如果您使用反编译器查看DeleteAsync,您会看到它会抛出NotImplementedException,因此无法删除角色! (2认同)