Django: ищет реализацию бэкэнда ldap db (или любую помощь в этом) - PullRequest
0 голосов
/ 02 ноября 2010

После этой записи (я искал библиотеку, позволяющую мне объявлять модели Django на бэкэнде ldap), я решил использовать ldapdb . Поработав некоторое время с этой библиотекой, я понял, что она не достигает необходимого мне уровня контроля, и поэтому я ищу другие решения. То, о чем я думаю сейчас, - это реализация Django db backend на основе python-ldap.


EDIT

Мне это нужно, потому что я в настоящее время внедряю систему управления пользователями / группами в каталоге ldap (для этого требуется способность манипулировать не только пользователями, но и различными классами объектов ldap). Поэтому я бы хотел использовать (почти) полную форму Django, но с бэкэндом ldap.

Поскольку я люблю Django (и был бы весьма заинтересован в изучении грязных низкоуровневых деталей db.backends), и поскольку в этом проекте уже реализовано много вещей, я хотел бы придерживаться Django (если кто-то есть очень веская причина, почему я не должен, и очень хорошая альтернатива!).


  • У кого-нибудь из вас есть более простое решение этой проблемы?
  • Кто-нибудь из вас знает о реализации такой вещи (ldap db backend)?
  • Кто-нибудь из вас знает что-нибудь хорошее, чтобы начать "реализацию django db backend"?
  • Кто-нибудь из вас заинтересован в помощи этому проекту?

Ответы [ 3 ]

1 голос
/ 25 декабря 2010

Вы делаете много смелых заявлений, таких как «много вещей сломано из-за того, как оно реализовано» и «подклассы очень и очень далеки от завершения», не могли бы вы остановиться на них подробнее? Как автор django-ldapdb, я бы приветствовал ваши предложения относительно того, что вы хотели бы изменить / исправить, для этого предназначен список рассылки django-ldapdb!

К вашему сведению, я выбрал подход к созданию подкласса класса Model, потому что обычно вам нужно иметь только пару моделей, использующих бэкэнд LDAP, а не все модели в вашем приложении, и django 1.1 не поддерживает несколько баз данных. Кроме того, LDAP сильно отличается от существующих бэкэндов SQL:

  • не является реляционной базой данных
  • это не "плоский", это древовидное
  • истинный «первичный ключ» для записи - это отличительное имя (DN), которое не является фактическим полем, а значением, вычисленным из других полей
  • поля могут быть многозначными

По всем этим причинам у меня есть серьезные сомнения относительно того, чего можно достичь, написав настоящий бэкэнд LDAP. Я думаю, что у вас всегда будут некоторые специфические особенности LDAP, и модель подклассов позволяет это сделать.

0 голосов
/ 09 февраля 2012

Кажется, что нет действительно хорошего решения.И делать все без ORM в Django также не является хорошим решением.

Вскоре я предприму новую попытку решения этой проблемы с помощью решения на основе django.

0 голосов
/ 02 ноября 2010

Лучше всего написать сценарий аутентификации для приложения.Вот некоторая документация по этому поводу:

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/

...