Должен ли я использовать номер или адрес электронной почты для идентификации пользователя на сайте? - PullRequest
3 голосов
/ 19 февраля 2009

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

С точки зрения дизайна / простоты использования / гибкости, должен ли я присваивать уникальный номер каждому пользователю или идентифицировать пользователя по электронной почте?

Преимущество присвоения уникального номера:

  1. Я могу изменить сам логин на более позднем этапе, не теряя данные пользователя (гибкие).

Недостатки:

  1. Мне приходится иметь дело с числами при использовании командной строки sql (подвержена ошибкам).

Что лучше? Видите ли вы какие-либо другие проблемы, которые необходимо рассмотреть для любой схемы?

Ответы [ 7 ]

9 голосов
/ 19 февраля 2009

Личность ваших пользователей должна быть уникальной и неизменной. Выбор адреса электронной почты в качестве личности не является хорошей идеей по нескольким причинам:

  • Электронная почта является одним из аспектов личности пользователя, который может измениться в любой момент времени.
  • Возможно, вы решите разрешить более одного электронного письма.
  • Вы можете решить добавить другие аспекты, такие как OpenID или Live ID, или даже просто старое простое имя пользователя.
  • Нет ничего плохого в том, чтобы разрешить нескольким личностям использовать один и тот же фасет электронной почты. Это редкий сценарий, но не неслыханный.
  • Нормализация адреса электронной почты сложна и подвержена ошибкам, поэтому могут возникнуть проблемы с обеспечением уникальности. (Адреса электронной почты чувствительны к регистру? Вы игнорируете. Или + внутри электронных писем? Как вы сравниваете неанглийские электронные письма?)

Кстати, использование электронной почты в качестве публичного представления личности пользователя может быть проблемой безопасности и конфиденциальности. Особенно, если некоторые из ваших пользователей младше 13 лет. Для идентификации пользователя вам потребуется другой публичный фасет.

6 голосов
/ 19 февраля 2009

Используйте оба. Вы должны добавить идентификатор, потому что вы действительно не хотите, чтобы другие таблицы использовали адрес электронной почты в качестве внешнего ключа. Сделайте адрес электронной почты уникальным, чтобы вы могли использовать его для идентификации пользователя с помощью командной строки sql.

2 голосов
/ 19 февраля 2009

Уникальный номер - ВСЕГДА! Но держите номер скрытым от пользователя.

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

1 голос
/ 19 февраля 2009

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

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

Работа с числами в объекте команды sql на самом деле не будет более подвержена ошибкам, чем использование реального адреса электронной почты, если что-нибудь, на мой взгляд, будет менее подвержено ошибкам.

1 голос
/ 19 февраля 2009

Ваш недостаток не является недостатком. Использование чисел с sql не более или менее проблематично, чем использование электронной почты или чего-то еще.

С другой стороны, ваше преимущество довольно сильное, вы можете захотеть ассоциировать пользователей друг с другом, разные электронные письма с одной учетной записью пользователя и т. Д., И всегда использование электронной почты усложнит ситуацию.

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

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

0 голосов
/ 08 января 2011

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

0 голосов
/ 19 февраля 2009

Просто несколько моментов для рассмотрения.

  • Как вы будете проверять адрес электронной почты?
  • Как вы гарантируете, что он действительно уникален (я не всегда использую свой реальный адрес, например, m.mouse at disney.com
  • Мне нравится использовать уникальный ключ, сгенерированный базой данных, чтобы идентифицировать запись, а затем добавлять атрибуты, которые находятся вне моего контроля отдельно
  • Электронная почта человека может измениться, но идентификатор не будет
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...