【问题标题】:Django : looking for an implementation of an ldap db backend (or for any help on this)Django:寻找一个 ldap db 后端的实现(或任何帮助)
【发布时间】:2011-05-04 00:31:53
【问题描述】:

遵循post(我一直在寻找一个允许我在 ldap 后端声明 Django 模型的库),我决定使用ldapdb。在用这个库玩了一段时间后,我发现它没有达到我需要的控制水平,因此我正在寻找其他解决方案。我现在想到的是实现一个基于python-ldap的Django db后端。


编辑

我需要这个,因为我目前正在 ldap 目录上实现用户/组管理系统(它不仅需要能够操作用户,还需要能够操作不同类的 ldap 对象)。所以基本上,我希望能够使用(几乎)完整的 Django orm,但使用 ldap 后端。

因为我喜欢 Django(并且更愿意学习 db.backends 肮脏的低级细节),并且因为这个项目中已经实现了很多东西,所以我想坚持使用 Django(除非有人我有一个很好的理由不应该这样做,还有一个很好的选择!)。


  • 你们中的一些人有解决这个问题的更简单的方法吗?
  • 你们中的一些人知道这样的事情(ldap db 后端)的实现吗?
  • 你们中的一些人是否知道一些很好的读物来开始“实施 Django 数据库后端”?
  • 你们中的一些人有兴趣帮助这个项目吗?

【问题讨论】:

  • Django 对于非 SQL 数据库并不是很好。请告诉我们您为什么需要它,以便我们提供更好的建议。
  • @Paulo Scardine:我目前正在 ldap 目录上实施用户/组管理系统。而且因为我喜欢 Django(和 Python),并且因为已经实现了很多代码,所以我想坚持使用 Django(或者你能提出一个非常简单的解决方案吗?)。
  • @sebpiq:即使我有很多空闲时间,我也不会在这个时候为 Django 编写非 SQL 后端。如果只是用户/组管理,我会写几个表单,直接使用python-ldap。
  • @Paulo Scardine:一个“任务”???工作量这么大吗?其实……这个项目挺大的,比“少群少用户”多一点。所以我在想“与其编写很多非常具体的代码,为什么不尝试正确地做到这一点,并尝试找到分享工作的人?”。你怎么看待这件事 ?你有编写非 rel 后端的经验吗?
  • @sebpiq:恕我直言,编写新的 SQL 后端应该是直截了当的,但在 Django 有适当的基础来支持非 SQL 后端的轻松开发之前,还需要几个版本。在这项任务是一场艰苦的战斗之前,每个非 SQL 后端都会遭受同样的 ldapdb 怪癖。

标签: django ldap django-database


【解决方案1】:

似乎没有真正好的解决方案。而且没有 Django 的 ORM 做任何事情也不是好的解决方案。

我很快就会尝试使用基于 django-orm 的解决方案来解决这个问题。

【讨论】:

    【解决方案2】:

    你做了很多大胆的陈述,比如“很多东西因为它的实现方式而被破坏”和“子类化远非完成”,你愿意详细说明吗?作为 django-ldapdb 的作者,我欢迎您就您希望更改/修复的内容提出建议,这就是 django-ldapdb 邮件列表的用途!

    仅供参考,我采用了 Model 类的子类化方法,因为您通常希望只有几个模型使用 LDAP 后端,而不是应用程序中的所有模型,并且 django 1.1 不支持多个数据库。此外,LDAP 与现有的 SQL 后端有很大不同:

    • 不是关系数据库
    • 它不是“扁平的”,它是树状的
    • 条目的真正“主键”是专有名称 (DN),它不是实际字段,而是从其他字段计算得出的值
    • 字段可以是多值的

    出于所有这些原因,我对编写真正的 LDAP 后端可以实现什么抱有严重怀疑。我认为你总会有一些特定于 LDAP 的怪癖,而子类化 Model 就可以做到这一点。

    【讨论】:

    • 嗨杰里米!我真的很抱歉我可能对 django-ldapdb 有点不公平。事实上,我之前已经在其他几个项目中使用过它,并且效果很好。然而,我现在正在做的项目有更大的需求(它是一个 ldap 管理器),所以 django-ldapdb 是不够的。起初,我试图改进它以包含我需要的功能,但它最终变得相当 hackish。所以我开始了我自己的 ldap-om,绑定到 django。现在它工作得很好,而且它的优点是更整洁,因为我不受 django ORM 的限制。我会尽快提供存储库的链接。
    • 您可能有兴趣知道 django-ldap 现在是一个合适的数据库后端!
    • 太好了!!!但是很遗憾,对我来说来得太晚了......我自己已经实现了某种对象映射器,并且因为它不紧贴 django 的 orm 而浪费了大量时间......
    【解决方案3】:

    您最好的选择可能是为应用程序编写一个身份验证后端。以下是有关它的一些文档:

    http://docs.djangoproject.com/en/dev/topics/auth/?from=olddocs#writing-an-authentication-backend

    这里有一篇文章解释了如何扩展 User 模型以使您能够无缝地使用此身份验证后端:

    http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/

    【讨论】:

    • 谢谢...但是我已经写了一些后端,而且我知道我需要的远不止这些。问题是我希望能够使用 django orm 操作任何 ldap 对象。所以这当然包括用户,但也包括任何其他自定义对象。
    猜你喜欢
    • 2011-04-23
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多