c# - 为什么我无法使用我的种子用户 C#、迁移种子、身份、核心 3 登录
问题描述
我已将种子用户添加到我的数据库中。我仍然无法使用该用户登录。也许是散列密码有问题,或者我完全误解了 IdentityUser 类的使用。我不确定真的,所以任何帮助表示赞赏。
我已将种子代码添加到生成的 Migrations 类中,名称为 Initial through Add-Migration Initial
-command,位于 Up() 方法的底部。
var hasher = new PasswordHasher<IdentityUser>();
IdentityUser user = new IdentityUser();
var pass = hasher.HashPassword(user, "Holliday1!");
migrationBuilder.InsertData(
table: "AspNetUsers",
columns: new[] { "Id", "UserName", "Email", "PasswordHash", "EmailConfirmed", "PhoneNumberConfirmed", "TwoFactorEnabled", "LockoutEnabled", "AccessFailedCount" },
values: new object[] { user.Id, "Admin@istrator.com", "Admin@istrator.com", pass, true, true, false, false, 0 },
schema: null);
整个类看起来像这样(当然很短 //):
public partial class Initial : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "AspNetRoles",
columns: table => new
{
Id = table.Column<string>(nullable: false),
Name = table.Column<string>(maxLength: 256, nullable: true),
NormalizedName = table.Column<string>(maxLength: 256, nullable: true),
ConcurrencyStamp = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_AspNetRoles", x => x.Id);
});
migrationBuilder.CreateTable(
name: "AspNetUsers",
columns: table => new
{
Id = table.Column<string>(nullable: false),
UserName = table.Column<string>(maxLength: 256, nullable: true),
NormalizedUserName = table.Column<string>(maxLength: 256, nullable: true),
Email = table.Column<string>(maxLength: 256, nullable: true),
NormalizedEmail = table.Column<string>(maxLength: 256, nullable: true),
EmailConfirmed = table.Column<bool>(nullable: false),
PasswordHash = table.Column<string>(nullable: true),
SecurityStamp = table.Column<string>(nullable: true),
ConcurrencyStamp = table.Column<string>(nullable: true),
PhoneNumber = table.Column<string>(nullable: true),
PhoneNumberConfirmed = table.Column<bool>(nullable: false),
TwoFactorEnabled = table.Column<bool>(nullable: false),
LockoutEnd = table.Column<DateTimeOffset>(nullable: true),
LockoutEnabled = table.Column<bool>(nullable: false),
AccessFailedCount = table.Column<int>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_AspNetUsers", x => x.Id);
});
//migrationBuilder.CreateTable("AspNetRoleClaims"...);
//migrationBuilder.CreateTable("AspNetUserClaims"...);
//migrationBuilder.CreateTable("AspNetUserLogins" ...);
//migrationBuilder.CreateTable("AspNetUserRoles"...);
//migrationBuilder.CreateTable("AspNetUserTokens"...);
//migrationBuilder.CreateIndex(...)
//User and role seeds
var role1 = new IdentityRole();
var roleId1 = role1.Id;
var role2 = new IdentityRole();
var roleId2 = role2.Id;
migrationBuilder.InsertData(
table: "AspNetRoles",
columns: new[] { "Id", "Name" },
values: new object[,] { { roleId1, "Användare" }, { roleId2, "Administratör" } });
var hasher = new PasswordHasher<IdentityUser>();
var user = new IdentityUser();
var pass = hasher.HashPassword(user, "Holliday1!");
migrationBuilder.InsertData(
table: "AspNetUsers",
columns: new[] { "Id", "UserName", "Email", "PasswordHash", "EmailConfirmed", "PhoneNumberConfirmed", "TwoFactorEnabled", "LockoutEnabled", "AccessFailedCount" },
values: new object[] { user.Id, "Admin@istrator.com", "Admin@istrator.com", pass, true, true, false, false, 0 },
schema: null);
migrationBuilder.InsertData(
table: "AspNetUserRoles",
columns: new [] {"UserId", "RoleId"},
values: new object[] { user.Id, roleId2}
);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
//migrationBuilder.Drop(...) drops all tables
}
}
数据库是 SQLLite,用户在带有生成 ID 和散列密码的 db 文件中。使用注册页面创建用户时,我得到一个不同格式的散列密码,这就是为什么我不确定我为我的种子用户所做的散列是否正确。
有任何想法吗?谢谢!
解决方案
推荐阅读
- c - 将switch语句中的case组合起来用于相同的操作并使用if else语句进行特定操作是否很好
- php - 带有输入数据的 laravel 多更新行
- wix - 在 Wix 工具集中的卸载过程中隐藏/显示控件
- kubernetes - 在 Google Kubernetes Engine 中设置服务节点端口范围
- azure-sqldw - 仅当 SQL 数据仓库中不存在时,如何添加分区边界?
- python - Python Pandas - How to merge two dataframes that have two different columns to two list columns
- c# - Xamarin Forms 3 - 支持的最低 Android 版本是多少?
- github - Azure DevOps 构建子模块
- postgresql - 如何在 Postgresql 中将位类型转换为字节类型
- r - 如何使用 R 在 Double Click Bid Manager API 中下载订单项?