首页 > 解决方案 > 如何在 Identity .net 核心中自定义 AddToRoleAsync

问题描述

我想在 UserRoles 表中添加一个名为 ChartId 的字段。之后,我想在滚动时为用户保存 ID 图表。为此,我使用方法:AddToRoleAsync。如何自定义此方法?

标签: c#asp.net-core.net-coreasp.net-identity

解决方案


首先,要将 ChartId 属性添加到 UserRoles 表中,您可以创建一个继承自 IdentityRole 的自定义 ApplicationRole 类,然后添加自定义属性,然后更新 DbContext 以使用自定义 ApplicationRole 并注册自定义 DbContext,代码如下:

using System;
using Microsoft.AspNetCore.Identity;

public class ApplicationRole : IdentityRole<Guid>
{
    public string Description { get; set; }
}

和:

public class ApplicationDbContext :
    IdentityDbContext<ApplicationUser, ApplicationRole, Guid>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }
}

更多详细信息,请查看此链接

其次,如果您想自定义/覆盖 AddToRoleAsync 方法,我认为您可能必须创建自定义 UserManager 和 userRoleStore,您可以参考此链接

此外,由于 ChartId 在 Roles 表中,因此在添加新角色时,您可以设置 ChartId 属性。然后,当您使用 AddToRoleAsync 方法将用户添加到角色时,无需设置 ChartId 属性。如果要更新 Role 的 ChartId 值,可以先找到 Role 并更新它,然后使用 AddToRoleAsync 方法将 User 添加到 Role。在这种情况下,我认为不需要自定义 AddToRoleAsync 方法,我们可以只创建一个自定义的 ApplicationRole 类。


推荐阅读