Каков наилучший способ модульной схемы пользователя, чтобы она была общей - PullRequest
0 голосов
/ 14 марта 2012

У меня вопрос по дизайну базы данных.По сути, я хочу иметь возможность создать схему для модели User, а затем использовать эту модель User в других моделях, расширяющих User, но я хочу разработать ее таким образом, чтобы она была достаточно универсальной для использования в каждом приложении.

Например, модель профиля или учетной записи может расширять пользователя, и в обоих случаях они будут различаться в зависимости от веб-приложения, которое вы разрабатываете, но основные учетные данные пользователя никогда не должны отличаться в любом веб-приложении.

Какие поля, по вашему мнению, должны быть в модели User?

Я думаю, что минимум для успешной обработки аутентификации будет:

  • email (уникальный идентификатор входа в систему)
  • salt (очевидно!)
  • password (duh)
  • lostToken (хэш для проверки функциональности утерянного пароля)
  • роль (участник, администратор, редактор и т. Д.)IMO, этот список ролей будет отличаться для разных сайтов, но для модели User слишком важно, чтобы здесь не было?)

Теперь мы переходим к другимИнтересные поля, которые все еще очень полезны:

  • createAt (при создании учетной записи)
  • ipAddress (отслеживать ip при создании учетной записи)
  • refererUrl(с какого сайта он пришел)
  • lastLoggedIn (последний раз, когда пользователь входил в систему)
  • isOnline (пользователь в данный момент онлайн)

И даже больше полейкоторые все еще довольно полезны:

  • имя пользователя (может использоваться не на каждом сайте)
  • количество последовательных входов в систему (аналогично сети в стеке)

Я думаю, что все остальное, например, социальные данные (лайки, голоса, просмотры профилей), значки / достижения, время последнего обновления своего профиля / аккаунта / что угодно, и другая информация, например, их имя, содержится в модели профиля каждого сайта.

Что ты думаешь?

1 Ответ

0 голосов
/ 14 марта 2012

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

Одна рекомендация, которая у меня есть, касается соли и пароля - вы должны использовать что-то вроде BCrypt, которое создаст соленый хеш для вас как единое поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...