разрешение на основе строки Django - PullRequest
0 голосов
/ 17 декабря 2011

В 1,3 документации Джанго говорится

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

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

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

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

1 Ответ

1 голос
/ 17 декабря 2011

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

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

...