他们一起工作得很好——我前几天刚刚设置好了(除了我不需要使用 django-profiles,因为它很容易创建你自己的)。
- 用户可以使用 django-registration 设置一个普通帐户(contrib.auth),该帐户会发送一封电子邮件以进行确认 - 在数据库中创建用户名/电子邮件/密码。
- 或者,他们可以立即使用 twitter/facebook/google 等登录,并使用虚拟密码(并且可能没有电子邮件)自动为他们创建一个 contrib.auth 用户。
一些要点和限制:
- 当您使用社交媒体资料登录时,会自动创建一个 contrib.auth.user。如果该用户名已经存在,则附加一个 UUID - 这很难看,django-social-auth 似乎还没有处理这个问题 -一个简单的解决方案是允许用户在注册后更改他们的用户名。理想情况下,当您使用 twitter 登录时,您有机会在将详细信息保存到数据库之前(而不是之后)完善您的详细信息
- 同样,设置了一个虚拟密码 - 这使得用户很难使用内置的 django 密码更改表单来重置密码,因为他们将无法输入现有密码(因为它被设置为不可散列的字符串)
- 您需要考虑何时注册 twitter 的用户想要稍后关联他们的 Facebook 帐户 - django-social-auth 帐户,并且很容易将多个第 3 方登录与一个帐户相关联
- Twitter 不会透露用户的电子邮件地址,因此您可能希望提示他们将其提供给您并将其保存到数据库中 - 问题是您需要验证它,这否定了使用社交的全部目的-认证!
django-social-auth 是一个很棒的项目,并且正在与convore Google Group上的一个小组积极开发,该小组始终是最新的,所以我当然会推荐它。它也很容易设置——只要确保你已经解决了你的登录流程,并且你知道使用它的潜在限制
编辑:
这个帖子有点过时了
- django-social-auth已成为python-social-auth
- django-allauth:OP 提到了最近流行的 django-allauth。我没有使用过它,但它似乎是身份验证、注册和配置文件的一个很好的替代品。
- 可配置的用户模型:Django 1.5在模块中引入了可配置的用户模型
auth
,因此您现在可以编辑要为用户使用的字段(仅限电子邮件,无用户名等)。如果您想向用户添加类似配置文件的信息而无需加入另一个表(就像使用django-profiles或OneToOne
与自定义配置文件模型的关系一样),这也很有用