带有自定义角色的Asp.net标识

本文关键字:Asp net 标识 角色 自定义 | 更新日期: 2023-09-27 17:49:55

我有身份框架和自定义角色的问题。我的自定义角色包含一组活动权限

我的自定义角色看起来像

public class MyRole : IdentityRole
{
    public List<MyPermission> Permissions { get; set; }
}
public class MyPermission
{
    public int Id { get; set; }
    public int Value { get; set; }
}

和RoleManager像这样

public RoleManager<MyRole> MyRoleManager;

我可以创建新角色,但我在更新角色权限时遇到问题。我像

一样更新
myRole.Permissions.Clear();
myRole.Permissions.Add(new MyPermission() { ... });
MyRoleManager.Update(myRole);

已添加新权限,但旧权限仍在数据库中。我怎样才能删除那些旧的。

:我刚刚发现了更多的问题。当我从RoleManager使用FindById时,没有从数据库加载权限。

谢谢。

带有自定义角色的Asp.net标识

假设您正在使用Code First,您将需要将DbSet's添加到您的上下文:

DbSet<MyRole> Roles {get;set;}
DbSet<MyPermission> Permissions {get;set;}

您还需要确保您的集合被标记为virtual ICollection:

public class MyRole : IdentityRole
{
    public virtual ICollection<MyPermission> Permissions { get; set; }
}