首次启动数据库时必须添加管理员帐户。 我添加了名为“admin”的用户,但不知道如何向其附加声明。
应用程序DbContext:
...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
var hasher = new PasswordHasher<User>();
modelBuilder.Entity<User>().HasData(
new User
{
UserName = "admin",
PasswordHash = hasher.HashPassword(null!, "admin"),
FirstName = "FirstName",
LastName = "LastName",
NormalizedUserName = "admin".ToUpper(),
Email = "[email protected]",
NormalizedEmail = "[email protected]".ToUpper(),
EmailConfirmed = true
});
}
...
我可以手动向 IdentityUserClaims 添加声明。但随后我需要以某种方式将该声明附加到创建的用户。我可以使用 IdentityUserClaims 中的 UserId,但 UserId 是自动生成的。当我使用 UserManager 添加声明时,它看起来像“e23cfc12-22b0-4f3a-9229-a4d606f3ecf0”。因此,手动附加声明并不是一个好主意。
modelBuilder.Entity<IdentityUserClaim<string>>().HasData(
new IdentityUserClaim<string>
{
Id = 1,
UserId = "??????",
ClaimType = ClaimTypes.Role,
ClaimValue = "admin"
},
所以当您创建用户时只需添加 Id
modelBuilder.Entity<IdentityUser>().HasData(
new IdentityUser
{
Id= "e23cfc12-22b0-4f3a-9229-a4d606f3ecf0",
UserName = "admin",
...
然后您可以在创建 IdentityUserClaim 时使用此 Id 作为 UserId
modelBuilder.Entity<IdentityUserClaim<string>>().HasData(
new IdentityUserClaim<string>
{
Id = 1,
UserId = "e23cfc12-22b0-4f3a-9229-a4d606f3ecf0",
...