2011-12-17 5 views
0

1.3 документов Джанго сказатьДжанго строки на основе разрешения

Чтобы включить разрешение объекта в вашей собственной серверной аутентификации, вы просто должны позволить прохождение параметра Obj к методам разрешения и установить атрибут supports_object_permissions класса в True.

Таким образом, я реализовал свой собственный сервер аутентификации, установил supports_object_permissions = True и определил def has_perm(self, user_obj, perm, obj=None).

Что бы я ожидать сейчас, что при переходе через администратор страниц вызывает этот метод будет называться mutltiple раза (что бывает), а также, когда я на листинг сайте модели с, параметром obj для заполнения с фактическими объектами. Например. когда я перечисляю продукты магазина, для каждого из этих продуктов этот метод будет вызван, поэтому я могу определить индивидуально, если этот объект будет отображаться и так далее.

Фактически происходит, хотя это obj всегда None. Я получаю эту концепцию неправильно или имею что-либо другое, чтобы мои фактические объекты проходили там?

ответ

1

Система разрешения по умолчанию Django - это уровень класса (уровень таблицы), а не уровень строки. Другими словами, вы не можете назначать разрешения на основе строк (на основе экземпляров). Это ограничение системы.

Проекты, подобные django-guardian, реализуют разрешения на уровне строк (на уровне экземпляра) в django. Вы можете найти список других permissions projects на сайте djangopackages.com.

+0

Я понимаю, что django по умолчанию не поддерживает это, и вам придется реализовать его самостоятельно. Вот что я пытаюсь здесь и из документов, как я их понял, шаги, которые я упомянул выше, - это то, что вам нужно сделать для всего этого. Какова была бы цель obj param, если бы не ваши собственные разрешения на уровне строк? – Dennis

+0

В каком порядке вы указали свой сервер? Он должен быть после бэкэнд по умолчанию. –

+0

Это указано сразу после django.contrib.auth.backends.ModelBackend – Dennis

Смежные вопросы