Передовой опыт разработки системы разрешений

В настоящее время я разрабатываю небольшой веб-сайт на Python, используя Pyramid.
Но я не знаю, как разработать систему разрешений.
Система должна быть очень гибкой: мне приходится устанавливать соединения между множеством разных таблиц.
Вместо того, чтобы писать одну таблицу разрешений для каждого варианта, я решил просто создать одну таблицу — я назвал ее PermissionCollection:

PermissionCollection:

  • разрешениеCollectionId — PrimaryKey
  • onType = ENUM («ПОЛЬЗОВАТЕЛЬ», «ПРЕПОДАВАТЕЛЬ», «ГРУППА ","КУРС"...)
  • onId = Integer

и таблица разрешений:

  • permissionId — PrimaryKey
  • ключ
  • значение
  • permissionCollectionId — ForeignKey

Я определю стандартные PermissionCollections для каждого возможного отношения жестко — закодировано в источниках, и если у пользователя, курса, учителя... есть специальные права, я создам новую коллекцию PermissionCollection и добавлю к ней разрешение.

Я новичок в веб-программировании и не знаю, полезен ли этот подход. Или если что-то подобное вообще существует. Я думаю, что Pyramid ACL не подходит для этой задачи, не так ли?

5
задан Felix Scheinost 17 April 2012 в 14:56
поделиться