Нужно ли поле login?


Мы задали себе этот вопрос. У пользователей есть как минимум два поля которые должны быть уникальными: Login и Email. На самом деле кроме этих двух полей ещё могут быть id и телефонный номер.

Можем ли мы отказаться от поля email? Нет, так или иначе нужно отправлять сообщения пользователю хотя бы на случай потери пароля. Можем ли мы избавится от поля login? Как правило да.

Есть ровно одна причина использовать поле логина — если у вас на сайте пользователи имеют публичные профили к которым часто обращаются. Например на GitHub логин нужен для ссылок на репозитории. В Twitter поле логина нужно потому что очень часто совершенно незнакомые люди общаются друг с другом и публично.
В любом случае, логин это некая дополнительная информация, такая же как OpenId. Значит мы таки можем от неё отказатся, но вот email — никак.
У логина есть ещё одно интересное применение: мыло можно поменять, а логин обычно не меняют.
На самом деле это ограничение сугубо потому что поле логина используется как первичный ключ. Строковый первичный ключ это уже не очень удачное решение. И дело не только в производительности, и с тем что больше места занимает. Это ещё связано с тем что всегда нужно помнить о регистре символов и не забыть сделать trim. А ещё не забыть проверить максимальный размер логина, ведь строки в БД не бесконечны.
Поэтому я считаю что есть смысл использовать обычный целочисленный id для первичного ключа. Так что и тут логин становится не нужным.

Мне вот нравится как реализована идентификация ВКонтакте: вы регистрируетесь по email, у вас есть публичный id и при желании (которое ещё и не у всех возникает) человек может себе выбрать некий уникальный alias.

Итак:
login — его тяжело выдумывать и тяжело подобрать не занятый. И это приходится делать на каждом сайте. В качестве ключа не эффективен.
id — самый лучший ключ, его сложно запомнить зато проще диктовать по телефону чем логин или email («це как русская эс»).
email — он однозначно уже есть у пользователя и в любом случае вам понадобится. Для первичного ключа его использовать нельзя (даже хотя бы потому что корректный email адрес может занимать 254 символа).
У email-ов есть большая проблема — их нельзя использовать как публичный alias поэтому вам придётся либо выдавать пользователям id либо разрешить выбирать себе alias (что по сути тоже что и логин).
Ещё у email’ов есть проблема с представлением. Например Vasya.Pupkin@example.com и vasyapupkin@example.com могут ссылатся на один и тот же ящик и пользователь может зарегистрироваться допустим с точкой и потом долго удивляться почему на сайт его не впускают когда он набирает мыло без точки.
Ещё email адреса обычно дольше набирать. Зато их поддерживают все OAuth провайдеры, так что подключайте их и на парьте пользователей.

Вообщем думаю вкратце раскрыл тему и надеюсь на следующем вашем проекте вы решите избавится от поля логин и прикрутите просто OpenId или OAuth.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s