powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Распределение прав доступа в прогах...
19 сообщений из 44, страница 2 из 2
Распределение прав доступа в прогах...
    #32563193
Igor Elyas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Winni-Pooh

Трехзвенка это очень обширная задача. Сколько реализаций столько идей.

Сформулируй вопрос ... можно будет обсудить.

На своей практике нужда в трехзвенке у меня возникала только в случае доступа удаленных офисов к общей БД через web.

На самом деле она решает часть сложных проблем за счет увеличения сложности и стоимости разработки.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32563223
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Igor Elyas

Winni-Pooh этот вопрос продолжил в теме: Multi-Tier, или трехзвенка
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32563383
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНасколько я понял, сама прога должна быть написана с обращением к объекту ядра…
Что мне писать новую прогу?

Да, нужен еще интерфейс для администрирования доступа.

авторДа и не бесплатно это…

Я не предлагаю покупать :)))
Сама идея - вот суть.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32563456
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dik76
Сама идея - вот суть.

Идея - это хорошо... а у тебя как реализовано? Или тока идеи?
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32564853
Tonny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Winni-Pooh
представляю :)
я такую систему внедрял. Всё как вы говорите: трёхзвенка, вся бизнес-логика, вся безопасность - на сервере БД (MSSQL).
Приведенный мной вариант -действительно для достаточно простой системы, где функциональность АРМ задаётся указанием доступных для использования функций и прав. Но кому интересно - могу описать подробнее.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32564953
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ololа у тебя как реализовано?

У меня реализованно упрощенная версия ядра (разграничение доступа на уровне динамически формируемого меню). Предоставление доступа к пунктам реализуется через утилиту администратора. Сейчас работаю как раз над разграничением на уровне операций. Попутно хочу описав объекты системы, хотя бы частично автоматизировать написание клиента.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32565038
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dik76
...упрощенная версия ядра...

Ты динамически создаеш ФОРМЫ с меню или только меню на готовых формах?

Если только меню......
А если формы, то на них кроме меню бывает целая куча различных элементов ввода...

Хотя конечно можно для каждой роли создать свою форму...
Но там и без ролей хватает проблем, например с передачей параметров выбора между динамическими формами...

А на счет модуля Администрирования... дык я на него и потратил 2 дня...
Просто создать таблицы и занести туда права обычным SQL Explorer можно и за час... (немного загнул... смотря сколько форм и прав).
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32565155
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА если формы, то на них кроме меню бывает целая куча различных элементов ввода...

Вот об этом и речь. Я приследую цель описав объекты системы (ПР: объект - сотрудник, свойства - ФИО, ДР...), управлять доступом уже до свойств объекта.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32565225
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dik76
...объекты системы...

Насколько я понял твои объекты имеют мало что общего с тем куда ты меня посылал... вот там точно крыша съедит...
Можешь сам посмотреть в разделе 'Проектирование' тема 'Люди свершилось...'

Твой объект 'сотрудник' привязан к полю таблицы или элементу ввода на форме с указаниеп его типа? (Edit, ListBox...)

И вообще под какую задачу пишешь? Или просто заготовка на будущее?
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32565826
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понял твои объекты имеют мало что общего с тем куда ты меня посылал...
отсылал сюда (пост можно сказать описывает мою цель, ядро безопасности лишь модуль), потому что вещь интересная. я реализую по своему.

Твой объект \'сотрудник\' привязан к полю таблицы или элементу ввода на форме с указаниеп его типа? (Edit, ListBox...)
он привязан к сущности (таблице), а поля являются атрибутами. Для атрибутов указывается их визуальное представление (Edit, ...).

И вообще под какую задачу пишешь? Или просто заготовка на будущее?
Делаю не зависимую систему, т.е. это промежуточный слой м/у реляционной БД (на oracle) и клиентом (Delphi).
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32566218
mapnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Когда-то я написал IBXUserProfile но вскоре понял, что это ошибка.

Невозможно сделать нечто универсальное для настройки
всего "визуального" на все случаи жизни.

По-моему, более правильный вариант использовать простые
пользовательские переменные (неважно где их хранить)
наподобие ini - файла и по их текущему значению настраивать
интерфейс и логику программы - это более гибко.

Я это использую в достаточно большой системе (10 филиалов,
разбросанных по городу в радиусе 50 км)

По этому поводу, я написал компонент IBXUserProfiles 2.0,
не очень удачный, но у меня (в моей компании) работает
без проблем.

Кому интересно,
заглядывайте на http://www.sinn.ru/~mapnn

С уважением, Игорь Ильинский
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32566226
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mapnnВсем привет!

Когда-то я написал IBXUserProfile но вскоре понял, что это ошибка.


По этому поводу, я написал компонент IBXUserProfiles 2.0,
не очень удачный, но у меня (в моей компании) работает
без проблем.

при всем уважении :-)
напоминает историю развития технологий майкрософт.
"но потом другая группа разработчиков увидела фатальный недостаток в com - его придумали не они!" (с) вольный :-)
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32566235
mapnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет Alex

"Всегда хочется <как лучше>, а получается <как всегда>"

(c) Черномырдин

С другой стороны, мне не стыдно,
так-как не ошибается тот кто ничего не делает,
а тот, кто хоть что-то пытается, того заочно можно простить ....

mapnn :))
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32566440
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dik76
...ядро безопасности лишь модуль...
…указывается их визуальное представление...

Вот тут ты батенька ошибаешься. Это СооовСееем разные вещи…
Описание объектов как классов и свойств – другая задача, хотя и там есть своя система безопасности…

Зри внимательней… там две части: свойства связанные с данными (таблицами, их взаимодействием и защитой) и свойства интерфейса проги… (хотя тоже с правами)

Не нужно их скрещивать (не Мичурин ведь)… Ничего хорошего не выйдет…
А вот визуальные свойства и права их действия для пользователя являются едиными, поскольку относятся к общим объектам.
Например: TEdit.Enabled, Visible, ReadOnly и OnClik… как в прочем и TForm.Height, Width и др.

Dik76
Делаю не зависимую систему…

Нужно быть немного реалистичней, если конечно хош создать нечто, чем заинтересуются другие…
Если сделать модуль (лучше в виде компоненты) который позволит с минимальной доработкой проги ее разрулить… т.е. автоматизирует заполнение таблиц свойств допуска…

Например: поможет из Application выдернуть все формы, из Form все объекты, а из Object его свойства, методы и проставить им соответствующие права…
Тоды любой смогёт это быстро сделать и возможно даже спасибо скажут…
Лично у меня сейчас на это времени нет…
Если интересует могу описать что получилось по подробнее...

mapnn
…использовать простые пользовательские переменные (неважно где их хранить) наподобие ini – файла…


Вот тут я с тобой не согласен… Очень даже важно…
Какой геморрой творится в ini… особенно если этих настоек много… Для этого есть реестр, но…

Если хранить их на сервере – то получишь независимость от компа… Пользователь получит свои настройки на любой машине… И рулить ими легче в одном месте…

А вот считанные данные действительно можно хранить в простом массиве строк, например TStringList.

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

При этом все параметры получаю одним SELECT из ХП без особого увеличения нагрузки и времени выполнения…
И при смене пользователя, настройки для форм - те же (не нужно их перечитывать), просто при ее выводе свойства сменятся согласно новым правам…
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32566510
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ololОписание объектов как классов и свойств – другая задача, хотя и там есть своя система безопасности…
..
Не нужно их скрещивать (не Мичурин ведь)… Ничего хорошего не выйдет…

Я попробую :))), потом расскажу что вышло.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32567036
mapnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olol
Вот тут я с тобой не согласен… Очень даже важно…
Какой геморрой творится в ini… особенно если этих настоек много… Для этого есть реестр, но…

Если хранить их на сервере – то получишь независимость от компа… Пользователь получит свои настройки на любой машине… И рулить ими легче в одном месте…

Я как-раз имел ввиду хранение на сервере, например в виде некоторой
структуры в блобе (доп. плюс - возможность шифрования)
Структура считывается каждый раз после коннекта для конкретного юзера,
укладывается в памяти (TUserProfile) и лежит до следующего коннекта/переконнекта.

При необходимости изменить логику программы или настроить интерфейс,
в нужное время в нужном месте просто читаешь из этой структуры
нужную переменную и по её значению делаешь "нечто",
типа X = UserProfile.ReadInteger('X',0);
или Edit1.Enabled = UserProfile.ReadBoolean('Edit_Enabled',False);

Или изменить логику:

if UserProfile.ReadBoolean(Val1,False) then
// нечто
else
// нечто иное ...

ну и т.д. и т.п.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32567065
mapnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olol
Вот тут я с тобой не согласен… Очень даже важно…
Какой геморрой творится в ini… особенно если этих настоек много… Для этого есть реестр, но…

Если хранить их на сервере – то получишь независимость от компа… Пользователь получит свои настройки на любой машине… И рулить ими легче в одном месте…

Я как-раз имел ввиду хранение на сервере, например в виде некоторой
структуры в блобе (доп. плюс - возможность шифрования)
Структура считывается каждый раз после коннекта для конкретного юзера,
укладывается в памяти (TUserProfile) и лежит до следующего коннекта/переконнекта.

При необходимости изменить логику программы или настроить интерфейс,
в нужное время в нужном месте просто читаешь из этой структуры
нужную переменную и по её значению делаешь "нечто",
типа X = UserProfile.ReadInteger('X',0);
или Edit1.Enabled = UserProfile.ReadBoolean('Edit_Enabled',False);

Или изменить логику:

if UserProfile.ReadBoolean(Val1,False) then
// нечто
else
// нечто иное ...

ну и т.д. и т.п.
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32567110
vis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в питоне есть возможность паковать объекты в строку (модуль pickle)

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

в Делфи такого нет?
...
Рейтинг: 0 / 0
Распределение прав доступа в прогах...
    #32567483
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mapnn
...в виде некоторой структуры в блобе (доп. плюс - возможность шифрования)...

Большой привет! Я не считаю себя БОЛЬШИМ программистом, да и на форуме недавно…
olol – это от имени (Злобин Олег)…
Сервер не дал назваться Oleg – типа такой уже есть и просто ol нельзя меньше четырех…

Игорь, ну не нравиться мне работа с BLOB... некий кусок непонятно чего...
Это хорошо только если там данные хранятся простым списком...
А шифровать можно и в обычном CHAR (главное не перестараться)...

Ведь нет ни какой разницы, если ты создаешь всего ОДНУ служебную табличку или ДЕСЯТЬ…
Я не против твоей компоненты, но смотри, что получается…

Все данные прекрасно бьются на связанные таблицы (формы, объекты, права…) и не нужно придумывать параметры типа Form1Edit1Enabled…
А потом программно присваивать соответствующей компоненте нужное свойство…

Я потому так быстро и переделал прогу под это управление, что каждой форме задал всего два события:

// В форме…

void __fastcall TForm1::FormCreate(TObject *Sender)
{ SLObj = new TStringList(); SLObj->Sort(); DMS->GetFrmAccess(SLObj, "Form1");
}//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{ DM->SetFrmAccess(SLObj, Form1); SelectFirst();
}//---------------------------------------------------------------------------

// В дата модуле…

void __fastcall TDM::GetFrmAccess(TStringList* SL, AnsiString ShFrm)
{ AnsiString s, ShObj,ShAcs;
s = "SELECT ShObj, ShAcs FROM psSFrmShFrm(:ShFrm) ORDER BY IdObj";
quSQL->SQL->Clear(); quSQL->SQL->Add(s);
quSQL->Params->ParamValues["IdExe"] = IdExe;
quSQL->Params->ParamValues["ShFrm"] = ShFrm;
quSQL->Open(); SL->Clear();
TField *FLShObj = quSQL->FieldByName("ShObj");
TField *FLShAcs = quSQL->FieldByName("ShAcs");
while (!quSQL->Eof)
{ ShObj = FLShObj->AsString; s = "";
while (FLShObj->AsString == ShObj && !quSQL->Eof)
{ ShAcs = FLShAcs->AsString;
if (s.IsEmpty()) s = ShObj.Trim() + "="; else s += ";";
s += ShAcs.Trim(); quSQL->Next();}
SL->Add(s);}
quSQL->Close();
}//---------------------------------------------------------------------------
void __fastcall TDM::SetFrmAccess(TStringList* SL, TForm* FM)
{ AnsiString s,ShObj,ShAcs; TComponent *CP; TControl *CT; TMenuItem *MI; bool b;
for (int i=0; i < SL->Count; i++)
{ ShObj = SL->Names ; ShAcs = SL->Strings; ShAcs = LStrGetR(ShAcs, "=");
CP = FM->FindComponent(ShObj);
if (CP)
if (CP->InheritsFrom(__classid(TControl)))
{ CT = (TControl*)CP; CT->Enabled = DMS->CheckAccess(ShAcs);}
else if (CP->InheritsFrom(__classid(TMenuItem)))
{ MI = (TMenuItem*)CP; MI->Enabled = DMS->CheckAccess(ShAcs);}}
}//---------------------------------------------------------------------------


Извиняй что на C++Builder…
Самый простой пример для установки всего одного свойства ‘Enabled’…
Для ЛЮБОЙ компоненты из TControl и TMenuItem…

Это конечно далеко не идеал, максимально упростил для понимания…
И работает только в случае, если каждый объект имеет одно право допуска…
(если есть несколько перекрывающихся, то нужен дополнительный цикл для суммы прав)

Процедура ‘psSFrmShFrm’ получает список прав, а CheckAccess – просто проверяет наличие этого права у пользователя…

Ведь и заполнять эти таблицы можно автоматически, как я говорил раньше…
Если установить этот модуль в прогу, запустить ее и вызвать настройку – она сама переберет все что найдет и заполнит их… (кроме прав, конечно)

А вот с базой она должна работать все-таки через ADO… (IB конечно неплохой, но не единственный…)
К тому же некоторые вещи все равно ODBC требуют, например: Crystal Reports или у нас CAD/CAM Adem…
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Распределение прав доступа в прогах...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]