Полностью настроенная система входа в Django? - PullRequest
2 голосов
/ 16 июня 2010

В настоящее время я пишу приложение, которое планирую продать как SaaS.Не раскрывая «секретов», я могу сказать, что в основном это «система редактирования документов», в которой многие пользователи будут отправлять документы.

Основная иерархия такова:

  • Учреждение
  • Физическое лицо
  • Документ
  • Субдокумент

Таким образом, каждый человек должен иметь возможность ПОСМОТРЕТЬ все документы, которые были представлены кем-либо в ихучреждение, но должно иметь возможность редактировать только те документы, которые они создали.

Никто не должен даже знать о существовании другого учреждения - все это должно быть полностью скрыто.

Я написалкласс Django / Python, который облегчит это, но каждый документ, касающийся аутентификации, который я прочитал, требует, чтобы я использовал объект User.Это просто ограничение Django, или есть способ сделать это?

Если есть способ, как я могу получить свои собственные данные "Individual" класса, прикрепленные к объектам "request", чтобы я могпроверить, что я должен показывать пользователям?

Ответы [ 3 ]

3 голосов
/ 16 июня 2010

То, что вы ищете, это авторизация , а не аутентификация. Как вы обнаружили, встроенная система авторизации Django довольно грубая. Вам нужно что-то вроде django-author , если вы хотите более полное решение.

1 голос
/ 16 июня 2010

Модуль аутентификации обычно используется для проверки подлинности. Дает вам группы (учреждения), пользователи (отдельные лица) и разрешения. Используя эти функции, вы можете проверить, является ли пользователь членом группы или владельцем документа, прежде чем разрешить ему просматривать или редактировать документ.

http://docs.djangoproject.com/en/dev/topics/auth/

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

http://docs.djangoproject.com/en/dev/topics/auth/#other-authentication-sources

0 голосов
/ 16 июня 2010

В общем, если вам нужно добавить дополнительную информацию к встроенной модели User, вы должны создать новую модель, которая подклассов models.Model (не User), и идентифицировать ее в настройках как AUTH_PROFILE_MODULE. Вы можете получить соответствующий экземпляр вашей модели из user, позвонив по номеру user.get_profile(). (см. http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users).

Как правило, это полезно для добавления к пользователю дополнительных полей, таких как адрес, контактная информация и т. Д. Хотя это можно было бы использовать для аутентификации, вам, скорее всего, лучше использовать встроенные группы, или более всеобъемлющее решение, такое как django-Authority, как уже упоминали другие. Я включил этот ответ только потому, что он, кажется, был тем, о чем вы просили (способ присоединить класс к User), но не совсем то, что вам нужно (авторизация).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...