Они отлично работают вместе - я просто настроил это на днях (за исключением того, что мне не нужно было использовать django-профили, так как создавать свои собственные так же просто).
- Пользователь можетсоздать обычную учетную запись (contrib.auth), используя django-registration, которая отправляет электронное письмо для подтверждения - создание имени пользователя / email / пароля в БД.
- Кроме того, они могут сразу войти в систему с помощью Twitter / Facebook / Google и т. Д., И для них автоматически создается пользователь contrib.auth с фиктивным паролем (и, возможно, без электронной почты).
Некоторые моменты и ограничения:
- Когда вы входите в систему с помощью профиля в социальной сети, файл contrib.auth.user создается автоматически.Если это имя пользователя уже существует, к нему добавляется UUID - это ужасно, и django-social-auth, похоже, пока не решает эту проблему - простое решение - позволить пользователю сменить имя пользователя после регистрации.В идеале, когда вы входите в систему с помощью твиттера, вам предоставляется возможность уточнить ваши данные до того, как они будут сохранены в БД (а не после)
- Аналогичным образом устанавливается фиктивный пароль - это затрудняет разрешениепользователь может сбросить пароль, используя встроенную форму изменения пароля django, так как он не сможет ввести свой существующий пароль (так как он задан как необратимая строка)
- Необходимо учитывать, когда пользователь регистрируетсяс twitter хочет позже связать свою учетную запись на Facebook - django-social-auth делает это, и легко связать несколько сторонних входов с одной учетной записью
- Twitter не раскрывает пользователейадрес электронной почты, чтобы вы могли попросить их предоставить его вам и сохранить в базе данных - проблема в том, что вам нужно будет проверить его, что сводит на нет всю цель использования social-auth!
django-social-auth - отличный проект, который активно развивается с groна конвоере Группа Google , которая всегда актуальна, поэтому я, конечно, рекомендую это.Это также очень легко настроить - просто убедитесь, что вы сгладили свой поток входа в систему, и вы знаете о потенциальных ограничениях использования этого
РЕДАКТИРОВАТЬ:
Этот пост немного устарел
- django-social-auth стал python-social-auth
- Джанго-Аллах : OP упомянул Джанго-Аллах , который стал популярным в последнее время.Я не использовал его, но это, кажется, хорошая замена для аутентификации, регистрации и профилей.
- Настраиваемые пользовательские модели : Django 1.5 представил настраиваемые пользовательские модели в модуле
auth
, так что теперь вы можете редактировать поля, которые вы хотите использовать для своегопользователь (только электронная почта, без имени пользователя и т. д.).Это также полезно, если вы хотите добавить информацию, подобную профилю, для вашего пользователя без необходимости объединяться с другой таблицей (как вы бы делали с django-profile или OneToOne
отношением с пользовательской моделью профиля)