Алгоритмы, структуры данных


         

При этом корневым элементом будет


При этом корневым элементом будет являться виртуальная сущность Root, соответствующая единственному объекту Root. Эту схему будем условно называть "дерево связей". Сущность Root определяет систему как единое целое, поэтому она содержит единственный объект.
  • Привести модель "Сущность-Связь" к такому виду, чтобы сущность являющаяся родительской в "дереве связей" была связана с дочерней отношением "один-ко-многим".
  • Определить множество делегируемых действий над каждой сущностью.

    Одним из ключевых понятий в предложенном механизме является авторизационная роль, или просто роль.

    Роль - это настраиваемая совокупность доступных действий. Роли создаются и настраиваются в процессе эксплуатации системы. Если нет необходимости в настраиваемых ролях, тогда они могут быть жестко определены на стадии разработки системы.

    Доступ - это назначение определенной роли участнику системы для взаимодействия с объектом, или с его дочерними объектами.

    Таким образом, чтобы определить доступ, необходимо определить три вещи:


    • роль;
    • пользователь;
    • объект, на который распространяется эта роль.


    Доступ, определенный на объект родительской сущности распространяется на все присоединенные объекты дочерних сущностей.

    Программный код системы, при попытке пользователя совершить то или иное действие над заданным объектом системы, должен предусматривать проверку возможности совершения этого действия. Фрагмент алгоритма кода системы:

    ...
    Если Разрешено_Действие(номер_пользователя, номер_сущности, номер_объекта, номер_действия)

    То Произвести_Действие(объект, номер_действия);
    ...

    Функция проверки доступности действия имеет вид:

    Функция Разрешено_Действие(номер_пользователя, номер_сущности, номер_объекта, номер_действия)

    Если Cуществует_Доступ(номер_пользователя, номер_сущности, номер_объекта,номер_действия)

    То вернуть "Истина"

    Иначе

    Если номер_сущности не равен Root

    То

    Получить_Родительский_Объект(номер_сущности, номер_объекта, номер_родительской_сущности, номер_родительского_объекта);

    Содержание  Назад  Вперед