Почему я не могу войти в систему с помощью моего начального пользователя C #, начальное имя миграции, Identity, core 3 - PullRequest
0 голосов
/ 16 октября 2019

Я добавил начального пользователя в свою базу данных. Я не могу войти в систему с этим пользователем. Возможно, виноват хешированный пароль, или, может быть, я совершенно неправильно понимаю использование класса IdentityUser. Я действительно не уверен, поэтому любая помощь приветствуется.

Я добавил начальный код в сгенерированный класс Migrationsclass с именем Initial с помощью Add-Migration Initial -команды в нижней части метода 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);

Весь класс выглядиткак это (очень сокращенный ofcourse //):

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, и пользователь находится в db-файле с сгенерированным идентификатором и хэшированным паролем. При создании пользователя с помощью страницы регистрации я получаю другой отформатированный хешированный пароль, поэтому я не уверен, что хэш, который я использую для своего начального пользователя, верен.

Есть идеи? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...