Django, использующий / проектирующий систему разрешений на уровне строк, когда у нас разные роли
Я разрабатываю систему управления обучением.
В системе есть несколько действующих лиц, таких как учащийся, преподаватели, администратор, декан и т. Д. Теперь мне нужна система разрешений, которая может обрабатывать различные роли (студенты могут добавлять курсы в свою корзину, преподаватели могут CRUD курс, администраторы также имеют доступ к финансовым частям ну и тд)
Основываясь на моих исследованиях, мне нужна система разрешений на уровне строк, которая может выполнять разные роли. Я видел некоторые приложения, такие как django-guardian
djang-permissions
django-rulez
и т. д. Но все еще не уверены, как разрабатывать роли на их основе (они недостаточно хорошо документированы).
Может кто-нибудь дать мне подсказку, чтобы сделать эту мучительную работу?
1 ответ
Django имеет действительно хороший API для аутентификации / авторизации
Я бы посоветовал вам прочитать следующий документ: https://docs.djangoproject.com/en/dev/topics/auth/ приведены основные сведения.
Для вашего приложения наилучшим способом является установка разрешений для определенных вещей, таких как разрешения на редактирование курсов. Затем вы можете использовать разрешение, требуемое декоратором для ваших просмотров, которые позволяют вам делать эти вещи. Например, если у вас было представление:
def edit_course(request):
...#handle form rendering/submission for course model
Вы можете добавить выше этот вид:
@permission_required('course_editor')
def edit_course(request):
...#handle form rendering/submission for course model
и тогда только пользователь, имеющий это разрешение, может получить доступ к этой части функциональности.
Вы можете пойти дальше, создав группы, которым вы можете назначить разрешение, например, группу учителей, а затем вы можете назначить всех своих сотрудников в эту группу, и они унаследуют это разрешение 'course_editor'.
Но, как я уже сказал, этот вопрос является довольно широким для конкретного ответа, поэтому вам лучше всего получить документ по ссылке выше.