Warm tip: This article is reproduced from serverfault.com, please click

asp.net core-ApiAuthorizationDbContext的自定义角色类

(asp.net core - Custom Roles class for ApiAuthorizationDbContext)

发布于 2020-11-29 21:19:58

在过去的两天内,我一直在尝试获取ApiAuthorizationDbContext来设置自定义IdentityRole。使用IdentityDbContext可以按以下步骤完成:

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

在blazor项目模板中,ApplicationDbContext的声明如下:

public class ApplicationDbContext : ApiAuthorizationDbContext<ApplicationUser>
{
    public ApplicationDbContext(
        DbContextOptions options,
        IOptions<OperationalStoreOptions> operationalStoreOptions) : base(options, operationalStoreOptions)
    {
    }
}

我该如何使用ApiAuthorizationDbContext做类似的事情。我在ApiAuthorizationDbContext类中找不到这种支持。

谢谢。

Questioner
pitaridis
Viewed
0
pitaridis 2020-12-02 07:39:24

我没有找到自定义角色类的方法,但是我找到了解决问题的方法,并向现有的IdentityRole类添加属性,并且可以回答我的问题,以防万一其他人需要做类似的事情。解决此问题的方法是阴影属性。

例如,如果我想为IdentityRole类创建DateTime属性,则可以在DBContext类中使用以下代码。

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.Entity<IdentityRole>().Property<DateTime>("LastUpdated");
    base.OnModelCreating(builder);
}

现在我们可以像这样访问属性:

context.Entry(myRole).Property("LastUpdated").CurrentValue = DateTime.Now;

这不像拥有自定义类那样容易,但是至少它使我有机会拥有IdentityRole类的自定义属性。