【问题标题】:django-social-auth django-registration and django-profiles -- togetherdjango-social-auth django-registration 和 django-profiles -- 一起
【发布时间】:2011-12-15 20:19:17
【问题描述】:

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

请指教

更新:

我在我的项目中使用了allauth,它运行良好。您不需要将 django-registration 与 allauth 一起使用,因为它已集成在其中。但是,我使用的是自定义用户配置文件,这比 django-profiles 更好。

【问题讨论】:

    标签: django django-registration django-socialauth


    【解决方案1】:

    它们一起工作得很好——我前几天才设置的(除了我不需要使用 django-profiles,因为它很容易创建你自己的)。

    • 用户可以使用 django-registration 设置普通帐户 (contrib.auth),该帐户会发送一封电子邮件以进行确认 - 在数据库中创建用户名/电子邮件/密码。
    • 或者,他们可以直接使用 twitter/facebook/google 等登录,并使用虚拟密码(并且可能没有电子邮件)自动为他们创建一个 contrib.auth 用户。

    一些要点和限制:

    • 当您使用社交媒体配置文件登录时,会自动创建一个 contrib.auth.user。如果该用户名已经存在,则附加一个 UUID - 这很难看,django-social-auth 似乎还没有解决这个问题 - 一个简单的解决方案是允许用户在注册后更改他们的用户名。理想情况下,当您使用 twitter 登录时,您有机会在将详细信息保存到数据库之前(而不是之后)完善您的详细信息
    • 同样,设置了一个虚拟密码 - 这使得用户很难使用内置的 django 密码更改表单重置密码,因为他们将无法输入现有密码(因为它被设置为 unhashble字符串)
    • 您需要考虑注册 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 模块中引入了configuratble User models,因此您现在可以编辑要为您的用户使用的字段(仅限电子邮件,无用户名等)。如果您想在不加入另一个表的情况下向用户添加类似配置文件的信息(就像您使用 django-profilesOneToOne 与自定义配置文件模型的关系一样),这也很有用

    【讨论】:

    • 非常感谢您详尽的回复。实际上问题是我稍后会想要用户的电子邮件 ID,但我第一次希望用户立即开始。稍后当他们访问需要他们的电子邮件的功能时,我总是可以向他们要一个。此外,当他们建立个人资料时,他们将填写电子邮件。我不想让他们第一次气馁
    • 其次,密码问题有什么办法吗?您是否说过我们可以将多个社交登录名关联到同一个帐户?此外,由于我是 Django 新手,我在使用模板时遇到了一些麻烦,你能指导我学习一些关于如何制作模板的好教程吗?或者一个具有社交登录和本地注册的良好登录表单应该是什么样的......也非常感谢
    • social-auth 的作者创建了一个示例页面,您可以在此处登录并关联多个服务:social.matiasaguirre.net。我还没有调查密码问题,但我确信可以通过使用自定义视图轻松修复它,而不是使用默认的 django change_password 表单。如果您通过我的个人资料中列出的电子邮件向我发送电子邮件,我将通过类似项目的模板发送给您
    • 感谢所有帮助。我已通过您网站上列出的帐户向您发送了一封电子邮件。谢谢
    • 我只是被共存的 django-registration 和 django-social-auth 系统弄湿了。消除安全问题中间件“social_auth.backends.pipeline.associate.associate_by_email”是否会禁用 django-registration?
    猜你喜欢
    • 2013-07-12
    • 2013-05-21
    • 1970-01-01
    • 2011-06-04
    • 2011-12-09
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多