Использование электронной почты вместо логина в django

Во-первых, вопрос не в том, как пройти аутентификацию по паре «электронная почта / пароль», а в том, как создать логическую и, если хотите, красивую структуру данных.

Я хочу использовать электронные письма как имена пользователей в данном проекте django. Однако я не могу повторно использовать поля, предоставленные моделью auth.User, по крайней мере по двум причинам:

Поле max_length auth.User.username имеет длину 30 символов, что может быть недостаточно для некоторых адресов электронной почты.

auth.User.email не уникален - что явно не подходит для того, чтобы сказать, что имена пользователей должны быть уникальными.

Таким образом, очевидным способом здесь является сохранение имени пользователя в пользовательском профиле, который связан с auth.User. В этом случае нам приходится сталкиваться со следующими проблемами:

Создайте уникальное имя пользователя для auth.User.username - здесь должно быть в порядке хэш электронной почты md5?Оставьте поле auth.User.email полностью пустым, поскольку его длина составляет всего 75 символов, а в соответствии с RFC 5321 (Какова максимальная длина действующего адреса электронной почты?) электронная почта может быть длиной до 256 символов.

Следующие проблемы вытекают из предложенного решения:

Никто не сможет повторно использовать встроенные представления / шаблоны для стандартных операций, таких как сброс пароля и т. Д.В случае изменения адреса электронной почты auth.User.username необходимо будет обновить

Чтобы добавить масла в огонь, разработчики django вряд ли исправят это ограничение в обозримом будущем - смотритеhttp://code.djangoproject.com/ticket/11365

Таким образом, вопрос заключается в следующем: есть ли другой способ сделать это, и видите ли вы другие недостатки в предложенном выше решении?

Спасибо!

Ответы на вопрос(7)

Ваш ответ на вопрос