【发布时间】:2020-11-18 13:59:27
【问题描述】:
我想在 UserRoles 表中添加一个名为 ChartId 的字段。 之后,我想在滚动时为用户保存 ID 图表。为此,我使用方法:AddToRoleAsync。如何自定义此方法?
【问题讨论】:
标签: c# asp.net-core .net-core asp.net-identity
我想在 UserRoles 表中添加一个名为 ChartId 的字段。 之后,我想在滚动时为用户保存 ID 图表。为此,我使用方法:AddToRoleAsync。如何自定义此方法?
【问题讨论】:
标签: c# asp.net-core .net-core asp.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)
{
}
}
更多详细信息,请查看this link。
其次,如果你想自定义/覆盖AddToRoleAsync方法,我想也许你必须创建自定义的UserManager和userRoleStore,你可以参考this link。
此外,由于 ChartId 在 Roles 表中,当添加新角色时,您可以设置 ChartId 属性。然后,当您使用 AddToRoleAsync 方法将用户添加到角色时,无需设置 ChartId 属性。如果要更新 Role 的 ChartId 值,可以先找到 Role 并更新它,然后使用 AddToRoleAsync 方法将 User 添加到 Role。在这种情况下,我认为不需要自定义 AddToRoleAsync 方法,我们可以只创建一个自定义的 ApplicationRole 类。
【讨论】: