Разработать сложную систему доступа / разрешений, какой подход мне выбрать - PullRequest
2 голосов
/ 30 июля 2011

Я сейчас использую PHP + MySQL, но действительно могу использовать любой инструмент.

У меня есть система с около 50000 пользователей, которые организованы в группы, которые организованы в отделы, которые организованы в организации.

В моей системе есть пакеты с контентом. Каждый пакет имеет определенное разрешение. каждый пакет либо

  1. публично (мир),
  2. консорциум (все зарегистрированные в моей системе)
  3. частный (могут быть доступны для любых комбинаций отдельных пользователей + группа + отдел + организация)

Чтобы усложнить задачу, каждый контент может иметь обязательный контент, что означает, что вы не можете брать контент B до того, как вы взяли контент A (курсы в университете ...).

Мне интересно, как с этим справиться, сейчас все в MySQL работает нормально, просто каждый раз, когда я создаю контент с предварительными требованиями, я должен иметь возможность выбирать в качестве предварительного только те части контента с более разрешительный доступ, что означает большое количество вычислений для каждой части, которую я имею в системе (у меня есть несколько тысяч).

Теперь представьте, что у меня есть содержимое c, которое зависит от B, которое зависит от A ...
И какой каталог я показываю каждому пользователю? Представление вычисления, которое я должен сделать для каждой части контента, когда пользователь ищет всю систему.

Любое направление / предложение / известные системы, которые уже делают это?

1 Ответ

0 голосов
/ 30 сентября 2013

Я понимаю, что этот вопрос более 2 лет, и что к настоящему времени вы, вероятно, уже решили свою проблему.Тем не менее, вот несколько советов, которые помогут решить проблему, с которой вы столкнулись.

Вам необходимо вывести свою логику авторизации и свою бизнес-логику.Это означает, что вы хотите изучить механизмы бизнес-правил и правила авторизации.

Стандартами в этом пространстве являются BPEL (для бизнес-процессов) и XACML (для авторизации).

Вы бы использовалиXACML, чтобы определить, кто может просматривать / редактировать / принимать определенный контент.Вы должны использовать BPEL (или языки BPM), чтобы определить правила прохождения курса, прежде чем вы сможете пройти другой.

...