Я предлагаю вам не пытаться смешивать или унифицировать личность пользователя приложения и значения пользователя приложения из другого граничного контекста вашего приложения.
Идентификационная запись пользователя приложения является его представлением с точки зрения безопасности и используется для идентификации / аутентификации пользователя. Таким образом, он содержит данные о безопасности пользователя, его роли доступа и другие требования безопасности. Любая запись удостоверения может иметь очень конкретное право доступа в зависимости от его ролей и утверждений, и обычно этого достаточно.
Если вам необходимо представлять пользователя приложения с другой точки зрения (в качестве вашего сотрудника или в качестве вашего клиента, может быть, в качестве гостевой записи и т. Д.), То лучше создать другую таблицу (Сотрудники, Клиенты, Гости и т. Д.) Для это в другом DbContext (не в контексте идентичности). Это даст вам возможность не смешивать свои концептуальные границы. Кто знает, может быть, в какой-то момент вы решите создать отдельные микросервисы для каждого граничного контекста, и удостоверение будет служить им всем как еще один микросервис.
Если вы сейчас спрашиваете себя, как организовать такое параллельное хранение интерпретаций одного и того же пользователя приложения, то есть разные подходы. Но например:
- Когда пользователь регистрируется, вы создаете для него личность
- Когда он вошел в систему, он использует свои идентификационные данные для аутентификации
- Но когда он создает свой первый заказ, вы создаете для него запись Клиента, у которой тот же Id, что и его Идентичность, или внешний ключ к Идентичности, или ... все остальное зависит от ваших потребностей и бизнес-логики.