Сохранять настройки пользователя в таблице ASP.NET Core Identity AspNetUsers или нет

Я настраиваю веб-приложение с использованием ASP.NET Core с аутентификацией через Identity Framework. Быстрый вопрос. Я храню все виды данных о пользователе, такие как его адрес, настройки учетной записи, статус подписки и срок действия и т. д. Мне лучше хранить все это в таблице AspNetUsers, создав класс ApplicationUser, наследующий IdentityUser, или я должен сохранить эту таблицу для входа в систему/информации о безопасности и создать другую таблицу для хранения данных, относящихся только к моему приложению, и иметь отношения 1-к-1 между двумя таблицами?

Также следует учитывать GDPR. Мне нравится хранить предоставленные пользователем данные отдельно от данных о пользователе, собранных с помощью других средств. Таким образом, когда/если ваш пользователь решит удалить всю свою информацию, он удалит только ту информацию, которую предоставил.

SRQ Coder 10.04.2019 16:35
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
1 015
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Всегда отдельный стол/класс.

Сложность растет вместе с приложением. Стол станет слишком большим, и вы потратите время на то, чтобы отойти от него. У нас есть подобное в нашем устаревшем приложении с организацией, которая выросла до 70+ столбцов. Я слышал истории в Твиттере о людях с похожим опытом.

Также наряду с этим вы можете подумать о единой ответственности. Учитывая одну причину для изменения - или больше, чтобы дядя Бобс обновил определение "A module should be responsible to one, and only one, actor".

В итоге у вас могут быть настройки для module — и чем больше вы добавите, тем больше будет их количество. Конечно, просто оставьте это на потом, чтобы изменить ситуацию, но этого никогда не происходит.

Для меня Айдентика — это собственная система. Не ваша система. Он обеспечивает механизм аутентификации. Для этого он использует большинство столбцов в способности или полей в пользовательском классе.

Ваши настройки касаются вашего приложения - это ваш домен. Если вы замените Identity, вы можете заменить эту пользовательскую таблицу/пользовательский класс. Тогда где ваши настройки в конечном итоге?

Когда я перемещаю поля из ApplicationUser в Customer, я понимаю еще кое-что: не все пользователи являются клиентами! Моей учетной записи администратора не нужна информация о клиенте.

Etienne Charland 10.04.2019 17:18

Другие вопросы по теме