Инструменты пользователя

Инструменты сайта


axapta:безопасность

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

axapta:безопасность [2018/04/13 22:43] (текущий)
Строка 1: Строка 1:
 +Раздел:​ [[Администрирование | ]]
 +----
 +Здесь собираются сведения по поводу системы безопасности в Axapta
  
 +[[ДоступНаУровнеЗаписей]]
 +
 +[[КакПрограммноИзменитьПароль]]
 +
 +-----
 +
 +1. Форма раздачи прав несет в себе лишь ту бяку - что при первом просмотре дерева права грузятся в память,​ после чего там и остаются... до перезапуска Аксапты. Более бяк там нет... Она просто строит дерево
 +
 +2. Бэкап таблиц ""​SysSecurity*""​ по-хорошему надо делать по-другому:​
 +Модифицируется экспорт/​импорт прав в Аксапте таким образом - чтобы в получившемся файле лежали только ИМЕНА элементов АОТ. Т.е. по сути - нужно экспортнуть таблички ""​AccessRightsList""​ и табличек ""​SysSecurity*"",​ заменив при экспорте ID-шники на имена. Ну и ессно обратно - при импорте - подставив вместо имен текущие значения ID-шников. При экспорте - надо не забыть сохранить права перед экспортом. После импорта - их надо перегрузить и обновить дерево в форме
 +Файлы, в которых сохранены права - можно хранить в сейфе  ​
 +
 +3. Упаси Бог изменять права в трехуровневой конфигурации. Аксапта сохраняет права по принципу кто последний вышел из нее - тот и прав. А если вы настроили права, а после этого другой юзер вышел - можете смело считать свою работу напрасной. При импорте прав (т.е. изменении данных в табличках) - крайне нежелательно вообще иметь АОС под рукой.... Ибо его наличие аккурат приводит к глюкам,​ описанным George Nordic
 +----
 +Пользователю можно сбросить пароль,​ если есть доступ к SQL серверу. Для этого надо очистить поле OSACCOUNTNAME таблицы [[Таблица/​UserInfo]] ([[AxForum:​3959]])
 +
 +[[AxForum:​2888]] -- некоторе описание внутренностей системы контроля доступа в Axapta
 +
 +[[AxForum:​7654]]
 +----
 +Данный джоб выводит в InfoLog перечень групп, которым доступны зданные пункты меню (контейнер menuItems)
 +<code xpp>
 +static void Test_AccessibleForWho(Args _args)
 +{
 +    SecurityKeySet secSet;
 +    UserGroupInfo userGroup;
 +    DomainInfo domain;
 +    str items;
 +    container menuItems = [
 +        [menuItemDisplayStr(InventTable),​ AccessRecordType::​MenuItemDisplay],​
 +        [menuItemDisplayStr(LedgerTable),​ AccessRecordType::​MenuItemDisplay]
 +    ];
 +    str accessibleMenuItems()
 +    {
 +        int i;
 +        MenuItemName name;
 +        AccessRecordType type;
 +        str ret;
 +    ;
 +        for (i=1; i<​=conLen(menuItems);​ i++)
 +        {
 +            [name, type] = conPeek(menuItems,​ i);
 +            if (secSet.menuItemAccess(name, ​ type))
 +            {
 +                if (ret)
 +                    ret += ', ';
 +                ret += SysDictMenu::​newMenuItem(name,​
 +                    (type == AccessRecordType::​MenuItemAction) ?
 +                        MenuItemType::​Action : MenuItemType::​Display
 +                ).label();
 +            }
 +        }
 +        return ret;
 +    }
 +;
 +    while select userGroup
 +    {
 +        while select domain
 +        {
 +            secSet ​ = SysSecurity::​constructSecurityKeySet();​
 +            secSet.loadGroupRights(userGroup.id,​ domain.Id);
 +            items = accessibleMenuItems();​
 +            if (items)
 +            {
 +                info(strFmt('​%1;​%2:​ %3', ​ userGroup.id,​ domain.Id, items));
 +            }
 +        }
 +    }
 +}
 +</​code>​
axapta/безопасность.txt · Последние изменения: 2018/04/13 22:43 (внешнее изменение)