#.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");
}
}
Для более подробной информации о .настройка идентификации ядра сети, см.: Настройка модели идентификации