django-social-auth django-registration和django-profiles - 在一起

时间:2011-10-26 15:34:18

标签: django django-registration django-socialauth

是否有人一起使用django-social-authdjango-registrationdjango-profiles。他们一起工作得好吗?我已经建立了社交认证,但我在某处读到django-allauth更好。我应该切换到那个吗?

请告知

更新

我在我的项目中使用了allauth并且工作正常。您不需要将django-registration与allauth一起使用,因为它已集成在内。但是我使用自定义用户配置文件,这是比django-profiles更好的选择。

1 个答案:

答案 0 :(得分:34)

他们一起工作很好 - 我只是在前几天设置了这个(除了我不需要使用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帐户,并且很容易通过一个帐户来分配多个第三方登录
  • Twitter没有透露用户的电子邮件地址,因此您可能希望提示他们将其提供给您并将其保存到数据库中 - 这样做的问题是您需要验证它否定了整个目的使用social-auth!

django-social-auth是一个伟大的项目,正在积极开发,其中一个 Google Group小组始终是最新的,所以我肯定会建议它。它也很容易设置 - 确保你已经解决了你的登录流程,并且你知道使用它的潜在限制

修改

这篇文章有点过时了

  • django-social-auth 已成为python-social-auth
  • django-allauth :OP提到最近流行的django-allauth。我没有使用它,但它似乎是一个很好的替代身份验证,注册和配置文件。
  • 可配置的用户模型:Django 1.5在auth模块中引入了configuratble User models,因此您现在可以编辑要为您的用户使用的字段(仅限电子邮件) ,没有用户名等)。如果您想要向用户添加类似个人资料的信息,而无需与其他表格相关联(例如您使用 django-profiles OneToOne与自定义个人资料的关系,这也很有用模型)