Identityuser不包含索赔迁移的定义



今天,我做出了令人沮丧的决定,将身份服务器4的升级到.net核2.0(不像我真的有很多选择)。

在我的旧应用程序中,我在内存用户中添加了测试,作为用于测试的默认登录。这使用了身份服务器4教程代码,看起来像这样:

if (!userManager.Users.Any())
{
    foreach (var inMemoryUser in Users.Get())
    {
        var identityUser = new IdentityUser(inMemoryUser.Username)
        {
            Id = inMemoryUser.SubjectId
        };
        foreach (var claim in inMemoryUser.Claims)
        {
            identityUser.Claims.Add(new IdentityUserClaim<string>
            {
                UserId = identityUser.Id,
                ClaimType = claim.Type,
                ClaimValue = claim.Value,
            });
        }
        userManager.CreateAsync(identityUser, "Password123!").Wait();
    }
}

我正在收到一个错误:

IdentityUser不包含有关索赔的定义

我知道,这是您在Breaking Change公告中看到的破坏变化

    /// <summary>
    /// Navigation property for the roles this user belongs to.
    /// </summary>
    public virtual ICollection<TUserRole> Roles { get; } = new List<TUserRole>();
    /// <summary>
    /// Navigation property for the claims this user possesses.
    /// </summary>
    public virtual ICollection<TUserClaim> Claims { get; } = new List<TUserClaim>();
    /// <summary>
    /// Navigation property for this users login accounts.
    /// </summary>
    public virtual ICollection<TUserLogin> Logins { get; } = new List<TUserLogin>();

如果您使用这些导航属性,则需要将它们添加回您的应用程序特定用户类

这是什么意思,我没有特定应用程序的用户类?

我的身份注册就像:

services.AddIdentity<IdentityUser, IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();

我应该如何解决此问题,我想创建一个自定义IdentityUser类并添加(声称,角色,登录)属性?
我看不出这是如何有帮助的,因为他们不使用通用界面,如何再次重新填充它们?他们是在使用鸭子,我的假设是正确的吗?

要再次运行代码,您需要:

自定义您的应用程序用户阶段(这意味着使用导航范围扩展IdentityUser);然后在您的IdentityContext(作为通用参数)中使用您的用户级,并在数据库中最终迁移。然后一切都应该再次运行。

相关内容

  • 没有找到相关文章

最新更新