20

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

请指教

更新:

allauth在我的项目中使用过,它工作正常。您不需要django-registration与 allauth 一起使用,因为它已集成在其中。但是,我使用的是自定义用户配置文件,这比django-profiles.

4

1 回答 1

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 帐户,并且很容易将多个第 3 方登录与一个帐户相关联
  • Twitter 不会透露用户的电子邮件地址,因此您可能希望提示他们将其提供给您并将其保存到数据库中 - 问题是您需要验证它,这否定了使用社交的全部目的-认证!

django-social-auth 是一个很棒的项目,并且正在与convore Google Group上的一个小组积极开发,该小组始终是最新的,所以我当然会推荐它。它也很容易设置——只要确保你已经解决了你的登录流程,并且你知道使用它的潜在限制

编辑:

这个帖子有点过时了

  • django-social-auth已成为python-social-auth
  • django-allauth:OP 提到了最近流行的 django-allauth。我没有使用过它,但它似乎是身份验证、注册和配置文件的一个很好的替代品。
  • 可配置的用户模型:Django 1.5在模块中引入了可配置的用户模型auth,因此您现在可以编辑要为用户使用的字段(仅限电子邮件,无用户名等)。如果您想向用户添加类似配置文件的信息而无需加入另一个表(就像使用django-profilesOneToOne与自定义配置文件模型的关系一样),这也很有用
于 2011-10-26T21:01:37.507 回答