Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.24;
Скачать: CL | DM;

Вниз

Вход под одним логином   Найти похожие ветки 

 
Genzzz   (2003-01-25 22:36) [0]

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

Это можно поправить ?


 
Sergey Masloff   (2003-01-26 00:09) [1]

Ничего странного, стандартное поведение. Поправлять это не надо. А в чем, собственно, проблема?


 
Genzzz   (2003-01-26 00:47) [2]

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

P.S. А в MSSQL тоже самое ?


 
mad0max   (2003-01-26 10:18) [3]

Конечно, обрабатывай ручками если что не нравиться...


 
Tsr   (2003-01-26 11:13) [4]

А я даже не представляю что обрабатывать...


 
Tsr   (2003-01-26 15:18) [5]

Как сделать, так, чтоюы запретить вход ?


 
Shulc   (2003-01-26 16:32) [6]

Создаеш справочник пользователей(Login,pasword...). При входе в прогу запрашиваешь это все, проверяешь существование в справочнике пользователей, если все верно, блокируешь запись пользователя в справочнике. При входе в прогу, проверяшь, запись блокирована или нет. Ну, а дальше сам.


 
Tsr   (2003-01-26 18:09) [7]

хм. Не понимаю. Ты предлагаешь все хранить в файле ?

Ну так файл только для одной машины сгодится. А чтобы под этим логином никто с другим машин не зашел как сделать ?


 
Ich Hasse ©   (2003-01-26 22:15) [8]

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

2 Shulc Ну с password"ом ты погорячился


 
Tsr   (2003-01-27 01:17) [9]

А-а-а. Вы хотите наложить ограничения со стороны клиента...

А мне надо ограничение со стороны сервера...


 
mad0max   (2003-01-27 05:57) [10]

Штатной проверки средствами сервера по -моему нет, так что придется самостоятельно написать процедурку (например), и вызывать ее после коннекта. А уж последствия обрабатывай как хочешь....


 
Reindeer Moss Eater   (2003-01-27 10:30) [11]

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

Один и тот же логин и его пароль знают несколько человек?
Пробовать устранять этот недостаток средствами сервера или клиента?

А если навести порядок в администрировании ?


 
mad0max   (2003-01-27 12:34) [12]

to Reindeer Moss Eater

Почему бы двум администраторам одновременно не смотреть в базу?
:)


 
Reindeer Moss Eater   (2003-01-27 13:45) [13]

mad0max
Мне вообще непонятна печаль автора вопроса.

Почему бы двум администраторам одновременно не смотреть в базу?
Ради бога. Хоть тысяча администраторов одновременно.
Но зачем им пользоваться одним и тем же логином?


 
JibSkeart ©   (2003-01-27 14:44) [14]

Странно а почему бы и нет ...


 
Reindeer Moss Eater   (2003-01-27 15:33) [15]

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


 
Соловьев ©   (2003-01-27 15:42) [16]

Сделай 3-х уровневую БД, а там ручками на сервере сделай проверку при коннекте клиента : IP, Login, Password Море фантазии...


 
Tsr   (2003-01-27 18:34) [17]

Ой, ну под трехуровневую сейчас это геморорй переделывать...

Reindeer Moss Eater
проблема в том, что если засечена попытка войти в базу под одним аккаунтом в одно время - создается предупреждение. А как реализовать - не знаю

mad0max
Штатной проверки средствами сервера по -моему нет, так что придется самостоятельно написать процедурку (например), и вызывать ее после коннекта. А уж последствия обрабатывай как хочешь....

Вызывать процедуру ? Из клиента ? Нет...

нужно что-то типа тригерра, я так думаю, который срабатывает после коннекта сразу. Также еще вроде в interbase есть таблица, где прописаны те, кто в данное время подключен (по крайней мере, IBConsole может это узнать).
Если есть такая таблица - подскажите название плиз.


 
Deniz ©   (2003-01-27 18:58) [18]

По поводу справочников - это ЗРЯ, потому как если поставить блокировку и потерять connect, то user НИКОГДА больше не зайдет (если админ не поправит).
Есть предложение руками с event"ом
1. Коннект к базе.
2. Регистрация на event и post event "UserName".
3. Обработка event"ов "UserName".
4. Решение о возможности коннекта.
Обработка должна проверять количество event"ов, т.к. получит еще и свой.
При аварийном завершении программы или потере коннекта, проблем с повторным подключением не будет.
В любом случае нужно экспериментировать
Удачи,
Денис.


 
Victor_Cr ©   (2003-01-27 19:46) [19]

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

INSERT INTO LOG_TABLE (USER_NAME,LOGON_TIME,TXT_VERB)
VALUE (user,"now","вход(выход или другое действие)");

Спасти тебя это не спасет, но зато будешь знать кто и когда входил.


 
Tsr   (2003-01-27 21:42) [20]

Ну буду знать кто входил, используя мой клиент... а не допустим IBconsole

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


 
Reindeer Moss Eater   (2003-01-28 08:41) [21]

Какая беда должна исчезнуть, если в одно и то же время не будут подключены одинаковые пользователи ? (От чего хотим избавиться иными словами?)


 
Tsr   (2003-01-29 17:36) [22]

Reindeer Moss Eater, это правда так важно ? Я же говорю - ничего такого особенного. Просто логика использования базы подразумевает, что человек может быть в базе только один. И если их два - то значит кто-то у кого-то спионерил аккаунт.
Я, конечно, понимаю, что вы мне предлагаете идти по пути наименьшего сопротивления (ака ленивый бык) - нифига не делать, если это не архиважно. Но я так не люблю работать

Помогите, если кто знает как


 
Johnmen ©   (2003-01-29 17:45) [23]

>Tsr

Представь, что ты спионерил кредитную карточку и суешь ее в банкомат, при этом пользуясь спионеренным кодом...
Так вот, банкомату побарабану, кто пихает карточку !
Он не смотрит, правильный чел или нет.


 
Tsr   (2003-01-29 23:45) [24]

Johnmen, очень здорово что ты привел такой классный пример, только я не понял его.

Johnmen, а вот еще, знаешь что. Если ты подделаешь документы ФСБ"шника - то тебя менты на машине не будут проверять, а сразу отпускать. Представь ? Он не будет проверять - есть ли в ФСБ такой агент или нет


 
Reindeer Moss Eater   (2003-01-30 08:58) [25]

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

Ты совсем не понял, что я тебе предлагаю.
Кроме того "ака" - это совсем не синоним слова "как". И в контексте сказанного тобой неприменим.


 
passm ©   (2003-01-30 10:00) [26]

Tsr (29.01.03 23:45)> Тогда используй дополнительные средства аутентификации пользователя (отпечатки пальцев, радужная оболочка глаза...) :)
Но представь другой механизм: есть торговая система, где для пользователей разделены права на создание/проведение торговых/хозяйственных операций. Есть цепочка поставок/перемещений... Так вот, что если пользователь имеет право на проведение какой-либо операции, которая порождает последовательность поставок/перемещений, содержащую операции на которые у него нет прав? Цепочки реализуются посредством DCOM-сервера. Выход - создание суперпользователя с наличием прав на все операции, DCOM-сервер логинится под его аккаунтем и проводит цепочку. Итак, получаем, что несколько коннектов к базе данных под одним пользователем нам просто необходимо.


 
Sheriff   (2003-01-30 10:14) [27]

2Tsr
как Вам такой вариант:
- работаю с базой в IBConsole
- проверяю программу в Delphi
все это одновременно.
мне что 2 аккаунта заводить?


 
Reindeer Moss Eater   (2003-01-30 10:36) [28]

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

Итог : на автоматизацию чего-то это совсем не похоже. Второй юзер хочет и должен работать, но не имеет возможности. Требуется администратор, который будет принимать решение и выполнять ручные опреации (дропать сессии, оттаскивать пользователей от компьютеров и т.д.)
Мораль: Зачем?


 
alex-xxc   (2003-01-30 11:12) [29]

Можно взять IBDatabaseInfo и у Database.AfterConnect пишем:


if IBDatabaseInfo.UserNames.IndexOf(USER_NAME)>=0 then
//пользователь уже подключен, закрываем коннект,
//ругаемся и т.д.



 
Genzzz   (2003-01-30 18:03) [30]

Вот блин. Люди, вы странные какие-то ужас. Я говорю, что хочу реализовать. Вам обязательно знать, зачем это ? Вы здесь всех так допытываете. Если вы можете помочь - помогите. А не приводить дурацкие примеры. Reindeer Moss Eater, если под одним аккаунтом войдут два сотрудника - будет создано предупреждение, аккаунт аннулирован до окончания разбирательств кто у кого что украл. И вообще, я не хочу вас всех убеждать, что мне это нужно. ПОверьте на слово, что нужно. Наверное, я лучше понимаю, что надо делать в моей базе ?

alex-xxc, как понимаю, ты предлагаешь опять же сделать это на стороне клиента. А нужно на стороне сервера.


 
Sergey13 ©   (2003-01-30 18:38) [31]

2Genzzz (30.01.03 18:03)
Если у тебя такие требования к секретности, то твои взгляды нужно обратить в сторону платного ПО. Оракл например. За дешево сердито бывает редко.


 
Genzzz   (2003-01-30 23:44) [32]

1) В Оракле это легко реализуемо ?

2) А как эт овсе таки в IB/FB сделать ?


 
Александр С. ©   (2003-01-31 07:34) [33]

Решений множество, но не чисто серверных:
1. Клиент имеет грант ТОЛЬКО на получение имени роли (через СП или вид).
Сами клиенту о ролях догадываться и не должны.
Подключение к серверу не с помощью клиентской программы ему ни чего не даст.
Подключение с помощью клиентской программы происходит в два приема:
I подключение без роли и получение ее имени.
II подключение с именем и ролью.
Для роли установлены гранты, которыми теперь пользователь может также пользоваться.
Так же на сервере происходит блокирование подключения пользователя с таким именем.
При попытке нового коннекта с таким именем оповещается админ с помощью POST EVENT.

2. Клиент привязан к машине, и клиентская программа помимо пользователя передает при логине помимо имени-пароля IP адрес. Сервер проверяет 3 составляющих и пускает либо нет клиента.
Любая не клиентская программа передавать адрес не будет.
Подобных заморочек можно придумать еще, но одному серверу не потянуть.


 
Sergey13 ©   (2003-01-31 08:31) [34]

2Genzzz (30.01.03 23:44)
>1) В Оракле это легко реализуемо ?
Количество сессий на клиента - легко - через использование профиля. Там вообще много чем можно порулить. Практически всем. Но и отвечать за все придется самому.


 
passm ©   (2003-01-31 10:16) [35]

Genzzz (30.01.03 18:03)> Ничего странного.
Перечитай <Genzzz (25.01.03 22:36)>


 
Max Zyuzin ©   (2003-01-31 10:49) [36]

>Genzzz (30.01.03 23:44)
А чем вам не нравится такой вариант? Victor_Cr © (27.01.03 19:46) ИМХО вполне приемлимо...


 
passm ©   (2003-01-31 10:56) [37]

Max Zyuzin © (31.01.03 10:49)> Подходит только если организовать второе соединение с БД на уровне DirtyRead и запустить транзакцию, которая заканчивается при выходе из приложения. Иначе при аварийном выходе - останется "привет" от прошлого соединения.
Но все это противоречит тому, что необходим только один коннект с БД. А тут их минимум два.


 
Max Zyuzin ©   (2003-01-31 11:04) [38]

>passm © (31.01.03 10:56)
Ну второй конект производится только для того, что бы определить, есть ли первый... Если есть сразу отваливаемся...

А на счет аварийных выходов, это да... проблемма...


 
passm ©   (2003-01-31 11:18) [39]

Max Zyuzin © (31.01.03 11:04)> Потому и предлагаю:
НАЧАЛО ПРИЛОЖЕНИЯ:
Database1.TransIsolation = tiDirtyRead
ЕСЛИ есть запись о регистрации - вываливаемся
ИНАЧЕ стартуем транзакцию, вносим запись о регистрации, открываем второй Database2
КОНЕЦ ПРИЛОЖЕНИЯ:
Закрываем Database2
Database1.Rollback

ЗЫ: Сам не пробовал :)


 
Genzzz   (2003-02-02 11:24) [40]

passm
при всем написанном вся проверка на стороне клиена, что не есть ГУД.



Страницы: 1 2 3 вся ветка

Текущий архив: 2003.03.24;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.02 c
7-76696
Snake
2002-12-18 04:50
2003.03.24
Как настроить BIOS на включение?


3-76294
zubov
2003-03-04 18:44
2003.03.24
Создание db-полей в рантайме


3-76279
Grom
2003-03-04 12:33
2003.03.24
Sql help


1-76395
Vint45
2003-03-13 11:37
2003.03.24
Просвечивание одного компонента через другой


14-76670
modem
2003-03-09 09:13
2003.03.24
Печать текста