Использование электронной почты вместо логина в 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
Таким образом, вопрос заключается в следующем: есть ли другой способ сделать это, и видите ли вы другие недостатки в предложенном выше решении?
Спасибо!