Ответ 1
Они отлично работают вместе - я просто установил это на днях (за исключением того, что мне не нужно было использовать django-профили, так как это было легко создать самостоятельно).
- Пользователь может настроить обычную учетную запись (contrib.auth) с помощью django-registration, которая отправляет подтверждение электронной почты - создание имени пользователя/электронной почты/пароля в БД.
- Кроме того, они могут сразу же войти в твиттер /facebook/google и т.д., и пользователь contrib.auth создается для них автоматически с помощью фиктивного пароля (и, возможно, без электронной почты).
Некоторые моменты и ограничения:
- При входе в профиль в социальных сетях автоматически создается файл contrib.auth.user. Если это имя пользователя уже существует, добавляется UUID - это уродливо, и django-social-auth, похоже, пока не справляется с этой проблемой - простое решение - позволить пользователю изменить свое имя пользователя после регистрации. В идеале, когда вы входите в твиттер, вам предоставляется возможность уточнить ваши данные до того, как они будут сохранены в БД (а не после).
- Аналогично устанавливается фиктивный пароль - это затрудняет доступ пользователю к reset паролю, используя встроенную форму изменения пароля django, поскольку они не смогут ввести свой существующий пароль (поскольку он установлен как строка unhashble)
- Вам нужно учитывать, когда пользователь, который подписывает твиттер, хочет позже связать свою учетную запись в facebook - учетные записи django-social-auth для этого, и легко учесть несколько сторонних подписей с одной учетной записью
- Twitter не раскрывает адрес электронной почты пользователей, поэтому вы можете попросить их предоставить его вам и сохранить его в базе данных - проблема заключается в том, что вам необходимо будет проверить его, что отрицает всю цель используя social-auth!
django-social-auth - отличный проект и активно развивается с группой в группе Google Group, которая всегда до поэтому я бы, конечно, предложил это. Это также очень легко настроить - , просто убедитесь, что вы убрали свой поток входа, и вы знаете о потенциальных ограничениях использования этого
EDIT:
Этот пост немного устарел
- django-social-auth стал python-social-auth
- django-allauth: OP упомянул django-allauth, который недавно получил популярность. Я не использовал его, но, похоже, это отличная замена для аутентификации, регистрации и профилей.
- Конфигурируемые пользовательские модели. Django 1.5 представил конфигурационные модели пользователей в модуле
auth
, чтобы теперь вы могли редактировать, какие поля вы хотите использовать для своего пользователя (только по электронной почте, без имени пользователя и т.д.). Это также полезно, если вы хотите добавить информацию, подобную профилю, пользователю без необходимости присоединяться к другой таблице (например, с помощью django-profiles или отношенияOneToOne
с настраиваемой моделью профиля)