首页 > 解决方案 > 如何将新列添加到 Identity RoleClaims 表中(asp net core)

问题描述

我正在尝试向身份(asp net core)RoleClaims 表添加一列,但我发现内容只是为了扩展角色和用户类而不是RoleClaims。有人可以提供示例或指出内容。

标签: asp.net-coreidentityrolesclaims

解决方案


您需要创建一个新类来扩展RoleClaim. 如果您的密钥类型是,以下是如何执行此操作的示例string

public class ApplicationRoleClaim : IdentityRoleClaim<string>
{
    public virtual ApplicationRole Role { get; set; }
}

您可以将所需的任何新属性添加到此类,然后创建迁移以将它们添加为表列。

您还需要告诉您IdentityDbContext也使用这个新类。这是文档中的一个示例:

public class ApplicationDbContext
    : IdentityDbContext<
        ApplicationUser, ApplicationRole, string,
        ApplicationUserClaim, ApplicationUserRole, ApplicationUserLogin,
        ApplicationRoleClaim, ApplicationUserToken>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }
}

编辑:

使用您的自定义ApplicationRoleClaim类,您也可以覆盖OnModelCreating。这是文档中的一个示例:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    ⋮
    modelBuilder.Entity<IdentityRoleClaim<string>>(b =>
    {
        b.ToTable("MyRoleClaims");
    });
    ⋮
}

参考:ASP.NET Core 中的身份模型自定义


推荐阅读