使用 Django 的 OpenID 的最佳解决方案是啥? [关闭]

Posted

技术标签:

【中文标题】使用 Django 的 OpenID 的最佳解决方案是啥? [关闭]【英文标题】:What's the best solution for OpenID with Django? [closed]使用 Django 的 OpenID 的最佳解决方案是什么? [关闭] 【发布时间】:2011-01-08 13:33:10 【问题描述】:

请注意:这是一个古老的问题,有着古老的答案。大多数链接的应用程序现在都没有维护。这些天来,大多数人似乎使用django-allauth 或python-social-auth。为了后代,我将在下面保留原始问题。


至少有六个 Django 应用程序为 Django 提供 OpenID 身份验证:

django-openid django-openid-auth 另一个django-openid-auth,好像已经死了 django-authopenid django-socialauth(还提供 Twitter 和 Facebook 帐户的身份验证) django-socialregistration(也有 Facebook 和 Twitter 身份验证) django-openid-consumer,Simon Willison 原始 django-openid 的一个分支。似乎比完整的注册工作流程更适合简单的博客 cmets django-social-auth

我和他们中的几个一起玩。 Simon Willison 的django-openid 给人留下了很好的印象,但由于他在 Djangoland 中处于引领潮流的前沿,我有时很难理解他的趋势(例如 django-openid 中的整个动态 urlpatterns 系统)。而且,我无法登录以使用 Google。

django-authopenid给人留下了很好的印象,似乎和django-registration有很好的融合。 django-socialauth 和 django-socialregistration 支持 Twitter 和 Facebook,这绝对是一个加分项。谁知道 Facebook 是否以及何时开始成为 OpenID 提供商……?不过,socialauth 似乎有 its share of problems。

那么,最好的 OpenID 应用程序是什么?请分享任何积极(和消极)的经验。谢谢!

【问题讨论】:

django-social-auth by Matías Aguirre 是另一个,它作为一个项目在今天看起来非常活跃。除了 OpenId,它还支持所有主要的提供商(FB、Twitter、LinkedIn 等),支持用户数据填充和多个社交账户与单个用户的关联。 注意: django-social-auth 已重命名为 python-social-auth。 【参考方案1】:

我更喜欢 django-authopenid,但我认为大多数成熟的解决方案在这一点上是相当的。不过,它是我看到使用最多的东西。我已经对我们如何使用它进行了一些自定义,而不必实际分叉它,这在我的书中是一个巨大的优势。换句话说,它相当容易上钩。

【讨论】:

【参考方案2】:

你可以试试pinax

【讨论】:

是不是有点过分了?不过如果他只需要 openid,他可以看看 Pinax 选择了哪一个。【参考方案3】:

django-socialauth 对我有好处

【讨论】:

【参考方案4】:

已证明对我最有效且似乎最新的版本是启动板上的版本。

它与我已经使用 django.auth 模块的应用程序无缝集成。

https://launchpad.net/django-openid-auth

要获得副本运行:

bzr branch lp:django-openid-auth

或者通过 PyPI 安装它

pip install django-openid-auth

【讨论】:

谢谢!有没有说明书如何使用?我在启动板上没有找到它。 代码库bazaar.launchpad.net/~django-openid-auth/django-openid-auth/…中有一些示例以及Readme.txt中的安装指南 它在 pypi -> pip install django-openid-auth 在哪里可以找到文档 不幸的是它与 django 1.5 不兼容 - 渲染模板时会出错【参考方案5】:

不要忘记 django-socialauth 的 Elf Sternberg's fork - 他正在努力清理他认为原始 socialauth 应用程序中的许多错误实施决策。到目前为止看起来很干净,但尚不清楚他的项目是否会有动力。

【讨论】:

【参考方案6】:

此主题的最后一篇文章是在 2 月。已经快 8 个月了,我很确定很多事情都发生了变化。

我对 Django-Socialauth 非常感兴趣,因为它支持 gmail、yahoo、facebook、twitter 和 OpenID。

我发现了两个看起来是最新的分叉:

https://github.com/uswaretech/Django-Socialauth

https://github.com/agiliq/Django-Socialauth

此时第二个分支最近已更新。

我想知道最近是否有人使用过这些分叉?我正在为我的网站寻找最可靠的。

谢谢

更新:最新的分支似乎是omab/django-social-auth,这也是the pypi package 所指的。

【讨论】:

我已经使用pip install django-social-auth 让它工作了,它看起来与这个叉子很好地对齐:github.com/omab/django-social-auth。作为一个新手,最令人困惑的事情是理解如何将我的登录/错误模板与 socialauth url 和视图对齐。我提到的 fork 中的示例站点帮助很大。 django-social-auth != Django-Socialauth,事实上,第一个是在对Django-Socialauth 感到沮丧数小时后创建的。 github.com/omab/django-social-auth 有一个较新的分叉 django-social-auth 现已弃用,取而代之的是 omab/python-social-auth

以上是关于使用 Django 的 OpenID 的最佳解决方案是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用Django实现微信公众号用户openid登录认证

没有密码的django身份验证

SSO - 未找到 OpenID 端点

Auth Servers 的 openid 配置中 URL 的最佳实践(众所周知)

更改 Liferay 登录页面中的“OpenId Connect”链接的最佳方法是啥?

微信openid原理及支付过程中使用方案