Дескриптор безопасности

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
 
(Набор групп текущего пользователя)
Строка 15: Строка 15:
 
Ниде приводится пример кода, который позволяет получить строку с наименованиями всех групп, в которые входит текущий пользователь системы:
 
Ниде приводится пример кода, который позволяет получить строку с наименованиями всех групп, в которые входит текущий пользователь системы:
  
<pre>
+
  ...
 
+
...
+
 
   dim Creator, UG, InGroups
 
   dim Creator, UG, InGroups
 
   set Creator = new TCreator
 
   set Creator = new TCreator
Строка 32: Строка 30:
 
     UG.Next
 
     UG.Next
 
   loop
 
   loop
...
+
  ...
  
</pre>
+
[[Category:База данных]]

Версия 11:18, 12 ноября 2009

Дескриптор безопасности -- это 32-х битовое целое число содержащее битовую маску групп пользователей обладающих определенным правом доступа. Если n-ый бит в дескрипторе установлен, следовательно группа пользователей с id=n обладает указанным правом.

Разграничение доступа на уровне записи

Одно из применений дескриптора безопасности -- это разграничение доступа к отдельным записям в таблице. Для этого в таблицу добавляются от одного до трех полей имеющих предопределенные названия: AVIEW, ACHAG, AFULL. Тип полей задается доменом dsecurity.

Поле AVIEW определяет какие группы имеют право на просмотр записи, ACHAG определяет множество групп имеющие право на изменение записи и, наконец, AFULL -- дескриптор безопасности полного доступа к записи (просмотр, изменение, удаление, печать, изменение прав доступа).


Набор групп текущего пользователя

Множество групп, в которые входит текущий пользователь, задается битовой маской, хранящейся в свойстве InGroup глобального объекта IBLogin.

Ниде приводится пример кода, который позволяет получить строку с наименованиями всех групп, в которые входит текущий пользователь системы:

 ...
 dim Creator, UG, InGroups
 set Creator = new TCreator
 set UG = Creator.GetObject(Application, "TgdcUserGroup", "")
 InGroups = "" 
 UG.Open
 do while not UG.EOF
   if ((2 ^ (UG.id - 1)) and IBLogin.InGroup) <> 0 then
     if InGroups > "" then
       InGroups = InGroups & ", "
     end if
     InGroups = InGroups & UG.FieldByName("name").AsString
   end if
   UG.Next
 loop
 ...
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты