Я хотел бы иметь несколько уровней разрешений для API, использующего Django Rest Framework, как мне лучше всего этого добиться?
В частности, у меня есть три категории авторизации:
- Роли: доступ на уровне модели, например, администратор и разные типы клиентов.
- GroupAccess: для объекта, групповой доступ, например, для группы пользователей.
- Чувствительность: для объекта, дополнительные тегидля конфиденциальной информации.
Вторые две категории применяются одинаково ко всем моделям, и было бы неплохо не требовать отдельных разрешений для каждой модели.
Идея 1:
Создайте модель для каждой категории, унаследованной от стандартной группы аутентификации django.Делать это в качестве прокси-групп, чтобы логически отличаться в моем коде, но максимально соответствовать стандартной авторизации.Затем используйте django-guardian, чтобы включить разрешения уровня объекта.
Идея 2:
Используйте стандартные группы для ролей и назначьте разрешения уровня модели на основе этих групп.Для разрешений на уровне объекта напишите пользовательские классы разрешений в Django Rest Framework, чтобы проверить разрешения на уровне объектов для пользователя.