Добавление столбца в AspNetUserTokens с использованием кода сначала в Asp.Net основная идентичность

#.net #asp.net-core #.net-5 #asp.net-core-identity

Вопрос:

Мне нужно добавить столбец для отслеживания версии шифрования ключа 2FA и кода восстановления, хранящегося в таблице AspNetUserTokens, для существующей .Приложение Net5 web api. Я мог бы напрямую использовать команду Sql для выполнения миграции. Я хотел бы использовать первый подход к коду, если это возможно. Это, похоже, не подпадает под существующие шаблоны AspNetUsers и AspNetRoles, определенные в документации. Любые предложения будут оценены по достоинству.

Ответ №1:

Первый подход к основному коду EF позволяет добавлять пользовательские столбцы в идентификаторы. Несколько изменений в коде сделают это за вас.

Создайте новый класс, наследующий от IdentityUserToken<TKey>

     public class ApplicationUserToken : IdentityUserToken<string>
    {
        public int CustomColumn { get; set; }
    }
 

Измените свой DbContext на следующий

  public class ApplicationContext : IdentityDbContext<
        IdentityUser, IdentityRole, string,
        IdentityUserClaim<string>,
        IdentityUserRole<string>,
        IdentityUserLogin<string>,
        IdentityRoleClaim<string>,
        ApplicationUserToken> //Class inherited by IdentityUserToken<TKey>
    {
        public ApplicationContext(DbContextOptions<ApplicationContext> options)
            : base(options)
        {

        }
    }
 

Миграция после изменений

     public partial class Withcustomtokens : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.AddColumn<int>(
                name: "CustomColumn",
                table: "AspNetUserTokens",
                type: "int",
                nullable: false,
                defaultValue: 0);
        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropColumn(
                name: "CustomColumn",
                table: "AspNetUserTokens");
        }
    }
 

Для более подробной информации о .настройка идентификации ядра сети, см.: Настройка модели идентификации