Имеет ли смысл разделять личность пользователя и профиль? - PullRequest
0 голосов
/ 27 февраля 2019

При написании решения с нуля, основанного на микросервисном подходе (точнее, это Azure Service Fabric), я пришел к мысли разделить идентификацию пользователя (учетные данные, заявки и т. Д.) И профиль пользователя (который может содержатьнекоторая социальная информация, такая как аватар, ссылки на социальные сети, день рождения и т. д.).

Для идентификации я собираюсь использовать IdentityServer4 (ядро ASP.Net без сохранения состояния) и для хранения всех этих данных.думать о Entity Framework + SQL.Профиль будет управляться и храниться на разных микросервисах (в том числе без сохранения состояния) с подключением к базе данных Cosmos (через API Mongo DB), что делает его хранилищем NoSQL.

Есть ли недостатки такого подхода?не в курсе?

1 Ответ

0 голосов
/ 27 февраля 2019

Вы смешиваете здесь кучу вещей.Во-первых, ваша фактическая сущность «пользователь» сохраняется в базе данных.Нет веской причины для того, чтобы отделить «профиль» от этого, поскольку это всего лишь данные о пользователе.Если вы используете Identity для управления пользователями, ролями и т. Д., Он был спроектирован так, чтобы его можно было расширять с нуля, то есть помещать пользовательские данные в пользовательскую сущность.Отдельная сущность профиля служит только для бесполезной необходимости объединения.

На более высоком уровне после аутентификации пользователя (через Identity Server) у вас есть принципал.Этот принцип - в основном просто набор требований, привязанных к определенной «идентичности» (то есть аутентифицированному пользователю).Заявки поступают из разных мест, это могут быть данные о записи пользователя, ролях или даже сторонние заявки, например, когда используется внешняя учетная запись для входа.Откуда берутся утверждения, в основном несущественно.

Длинные и короткие, нет причин для отдельной сущности профиля и особенно нет причины для совершенно другой службы для работы с профилями.Эта служба профилей неизбежно должна будет использовать пользовательскую службу, поэтому между ними существует жесткая зависимость: явный признак того, что это не настоящая отдельная служба.Фактически, это только делает остальную часть вашего приложения намного более сложной, чем то, что вам приходится работать как со службой пользователя, так и со службой профилей, в зависимости от того, какую часть пользователя вы ищете.

...