Вы не можете удалять поля в IdentityUser, но вы все равно можете добавить свои собственные - просто извлеките свой пользовательский класс из IdentityUser, а затем используйте перегрузку, которая принимает ваш пользовательский класс в качестве параметра типа (services.AddIdentity<MyApplicationUser, IdentityRole>(...)
). Ваши пользовательские свойства будут присутствовать всякий раз, когда вы получите пользовательский экземпляр из UserManager<MyApplicationUser>
. Затем вы можете игнорировать те, которые вам не нужны (например, я установил для EmailConfirmed значение true, когда вы создаете своих пользователей, а затем забыл об этом).
К сожалению, это работает только для простых типов данных, если вам нужны пользовательские отношения с другими объектами, единственным вариантом может быть замена частей удостоверения на ваши собственные. Я должен был сделать что-то вроде этого (заменить всю роль / часть заявки на идентичность чем-то нестандартным), и это было не красиво - в netcore 2.1 это включало такие вещи, как написание пользовательского хранилища и ручное удаление нескольких сервисов из ServiceCollection после идентификации регистрация.
Текущий netcore, похоже, имеет AddIdentityCore<TUser>(this IServiceCollection)
, и единственным требованием к TUser является то, что это ссылочный тип (where TUser : class
), поэтому я бы начал с него, если вам действительно нужно. Вам, вероятно, все еще придется реализовать свой собственный пользовательский магазин, который знает, как получить требования от вашего пользовательского класса - будьте готовы инвестировать в это хотя бы один день.