Asp .Net Identity 自定义 AspNetUser primary id 字段值?

Asp .Net Identity customize AspNetUser primary id field value?

我想提供自己的主 ID 生成逻辑,以便我可以为主 ID 字段提供值。 我知道,可以更改类型,但我想控制 Id 创建逻辑。

有什么办法可以实现吗?

谢谢

您几乎可以肯定地扩展 UserManager 以覆盖必要的功能并对此进行控制。他们提供了一个 AddUserManager<T>() 注册助手,让您在注册 ASP.Net 身份时轻松提供自己的实现。

您可以在这里找到源代码:https://github.com/aspnet/AspNetCore/tree/v3.0.1/src/Identity

另外,使用 ASP.Net Identity 没有硬性的 identityserver4 要求 - 如果它不能满足您的需求,那么您可以自由实施可以满足您需求的东西。

您可以将 AspNetUser 的主键 Id 设置为 No value generation,然后您可以在创建用户时添加自定义 ID 值。

在您的数据库上下文中:

protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);

        builder.Entity<ApplicationUser>().Property(u => u.Id).ValueGeneratedNever();
    }

添加迁移和更新数据库,然后您可以为主 ID 生成自己的值。

只需要覆盖 Id 字段

public class ApplicationUser : IdentityUser
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public override string Id
    {
        get { return base.Id; }
        set { base.Id = value; }
    }
}

var user = new ApplicationUser
{
    Id = "CustomId",
    UserName = "user",
    Email = "user@email.com"
}