Идентификация пользователя в приложении
Модератор: kdv
Идентификация пользователя в приложении
Каким образом лучше огранизовать идентификацию пользователя в приложении.
Вообщем необходимо сохранить РЕАЛЬНОЕ(ИВАНОВ А.Ю.) имя пользователя при изменении им записи в БД.
Помоему в FB или IB усть уже описание имен пользователей с реальными именами и т.п.
Вопрос как получить эти имена в своем приложении если известен текущий пользователь БД.
Может у кого пример или общая структура работы подобного рода есть.
Очень был бы признателен за помощь....
Вообщем необходимо сохранить РЕАЛЬНОЕ(ИВАНОВ А.Ю.) имя пользователя при изменении им записи в БД.
Помоему в FB или IB усть уже описание имен пользователей с реальными именами и т.п.
Вопрос как получить эти имена в своем приложении если известен текущий пользователь БД.
Может у кого пример или общая структура работы подобного рода есть.
Очень был бы признателен за помощь....
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Совершенно верно, я тоже так делаю, но только не ЮзерНэйм, а КомпьютерНэйм. Так надежней. Думаю, объяснять не надо почему.Ivan_Pisarevsky писал(а):Можно на клиенте подозвать АПИшную функцию ГетЮзерНэйм она даст имя текущего залогиненого юзера под виндой, и это имя писать в лог. т.е. не плодить своих юзеров, а брать доменные имена.
Вот пример как ее вызывать
Код: Выделить всё
function GetPCName:AnsiString;
var P:array [0..MAX_COMPUTERNAME_LENGTH] of char;
n:DWord;
begin
GetComputerName(P,n);
Result:=AnsiString(P);
end;
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Если на клиенте вин9х, то надежность все равно никакая... если клиенты НТишные, то пофигу, хоть юзернэйм, хоть КомпутерНэйм, но если на компе работает несколько юзеров с разными именами, то ЮзерНэйм поприятней будет.Совершенно верно, я тоже так делаю, но только не ЮзерНэйм, а КомпьютерНэйм. Так надежней. Думаю, объяснять не надо почему.
Вариант с таблицей user мне представляется предпочтительным. Нет привязки пользователя к конкретному ПК, т.е. любой пользователь м. работать с любого рабочего места.DSKalugin писал(а):Совершенно верно, я тоже так делаю, но только не ЮзерНэйм, а КомпьютерНэйм. Так надежней. Думаю, объяснять не надо почему.
Ошибаешься! Очень даже большая! Попробуй в момент авторизации на вин9х нажать ESC и посмотри что выдаст тебе GetUserName. Правильно - бред, т.к. юзер остался неопределен. А имя компьютера всегда будет постоянным и УНИКАЛЬНЫМ в пределах подсети.Ivan_Pisarevsky писал(а):Если на клиенте вин9х, то надежность все равно никакая...
А Юзер ROOT или вообще Administrator могут быть на любом ПК в сети. Отсюда отсутствие уникальности и надежности.
Им влом будет переключаться, поверь. Да и время колхозов, где хозяйство было коллективным давно прошло. Сейчас у каждого своя персоналка.Ivan_Pisarevsky писал(а):но если на компе работает несколько юзеров с разными именами, то ЮзерНэйм поприятней будет.
Это неправильная организация рабочего процесса.Лысый писал(а):Нет привязки пользователя к конкретному ПК, т.е. любой пользователь м. работать с любого рабочего места.
Надо привязывать иначе бардака не избежать.
Например, это отдел продаж. В конце месяца будут большие споры о том кому платить комиссионные, потому что вспомнить кто что продавал в течении месяца будет уже сложно. Менеджер Вася мог продать мерседес с Пашиного компьютера, потому что за своим ПК в тот момент сидел охранник Миша и смотрел порно по интернету. А поскольку в этот момент Пашин комп был занят Васей, ему пришлось толкнуть самокат с компа директора...
Бардак вобщем. В итоге Паше, продавшему самокат, обвалятся комиссионные с мерседеса, а Васе, продавшему мерс, будет выговор от админа за коллекцию троянов, а из денег вообще ничего не обвалится

Прикольно у тебя получаетсяDSKalugin писал(а):Это неправильная организация рабочего процесса.Лысый писал(а):Нет привязки пользователя к конкретному ПК, т.е. любой пользователь м. работать с любого рабочего места.
Надо привязывать иначе бардака не избежать....

-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Как далеки они были от народа... (с) Ты когда-нидь сталкивался с таким убожеством как 1с? так вот этот зверь при приличной нагрузке может работать только на терминал-сервере... А терминал сервера используют не только ОдинЭсники... Амбиснять что выдасть ГетЮзерНэйм и ГетКомпутерНэйм на терминал-сервере когда на нем десяток другой меджерско-бухгалтерских рыл?Им влом будет переключаться, поверь. Да и время колхозов, где хозяйство было коллективным давно прошло. Сейчас у каждого своя персоналка.
А вин9х надо вообще изживать как класс, у меня вон их только пять осталось, еще 2 в скором времени похерю, правда 3 штуки изжить не удается, но они уже составляют меньше десятой доли всего парка.
-
- Сообщения: 9
- Зарегистрирован: 10 ноя 2004, 22:33
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
А есть возможность всё таки взять имя пользователя из служебных таблиц Firebird или InterBase там же вроде и имя пользователя и его реальное имя и даже коментартии?Ivan_Pisarevsky писал(а):Если держать в базе своих собственные юзеров, то можно и пароли, а так зашел юзер в виндовый домен, пущщай пароли контролер домена проверяет, один раз на входе, а дальше зачем пароли? просто берем уже готовое имя пользователя и все.
Вопрос только как? Мне кажится что если это возможно, то это самый лучший вариант. Просто написать например UDF функцию которая бы возвращала необходимые данные о пользователе...
Только вот как......??????
Есть соображения....может ктото делал...?
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Вариант может быть лучшим только в конкретно взятых условиях.Мне кажится что если это возможно, то это самый лучший вариант.

Я вот помимо программирования под интербейз еще и админ сети предприятия и вести 2 разных списка юзеров для домена и интербейза мне не улыбается, уж я завел юзера в домен и все, нефиг его копировать, я ему уже полномочий надовал, все хватит.
В принципе свой вариант "на кошечках" я уже прикинул, вроде нормально, может и в боевые программы запихаю, или подожду когда очередная версия ФБ поддержит аутентификацию через виндовый (самбовский) домен.
-
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Вобщем-то да, но у меня была мысль примерно такого плана: в БД добавляю таблицу юзерс
тд_юзера инт /* ну тут ясно */
имя_юзера варчар /* берем из домена */
доступ_к_списку клиентов инт /*ставим галочки, например, 0 нефиг, 1 читаем, 2 пишем*/
доступ_к_списку_номенклатуры инт /*аналогично клиентам*/
доступ_к_расходным_накладнухам инт
...
Клиентское приложение на старте берет имя пользователя ГетЮзерНэйм сверяет его с таблицей юзерс если его там нет то закрываемся клоус и все, если оное нашлось, то играемся со свойством кнопочек Энэйблед, если, например, юзеру запрещено менять реквизиты клиента, то делаем для него кнопочку "редактирование реквизитов" дисэблед и тд.
Всего в базе таблиц около сотни, а более крупных сущностей типа СписокКлиентов, РеестрПрихода, Нормативы ... можно по пальцам пересчитать мне кажется легче будет права распределять, чем на уровне дополнительной аутентификайии юзера на ИБ сервере и правах доступа к таблицам, опять же юзеру не надо помнить 2 пароля и вводить пароль на старте программы не надо.
Ну примерно такие мысли...
тд_юзера инт /* ну тут ясно */
имя_юзера варчар /* берем из домена */
доступ_к_списку клиентов инт /*ставим галочки, например, 0 нефиг, 1 читаем, 2 пишем*/
доступ_к_списку_номенклатуры инт /*аналогично клиентам*/
доступ_к_расходным_накладнухам инт
...
Клиентское приложение на старте берет имя пользователя ГетЮзерНэйм сверяет его с таблицей юзерс если его там нет то закрываемся клоус и все, если оное нашлось, то играемся со свойством кнопочек Энэйблед, если, например, юзеру запрещено менять реквизиты клиента, то делаем для него кнопочку "редактирование реквизитов" дисэблед и тд.
Всего в базе таблиц около сотни, а более крупных сущностей типа СписокКлиентов, РеестрПрихода, Нормативы ... можно по пальцам пересчитать мне кажется легче будет права распределять, чем на уровне дополнительной аутентификайии юзера на ИБ сервере и правах доступа к таблицам, опять же юзеру не надо помнить 2 пароля и вводить пароль на старте программы не надо.
Ну примерно такие мысли...