Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как спросить в трехуровневом приложении логин и пароль в БД?


Bukerman ©   (2004-06-29 16:46:00) 

Всем привет!
Подскажите кто сталкивался, как заставить спрашивать прогу через сервер приложений логин и пароль в базу Interbase?
В 2х уровневом приложениии ставлю LoginPrompt = True и все ОК, но вот в 3х уровневом - не получается, использую TDatasetProvider на клиенте и TSocketConnection на сервере, ставлю на TDatasetProvider'e LoginPrompt = True, появляется окно логина, когда ввожу логин/пароль ругается и не пускает....


Bukerman   (2004-06-30 18:39:00) [1]

все сделал через мастер, меню Edit->Add interface
вот функция:

function TAppSrv.Test(const Login, Password: WideString): Integer;
begin
 if ((Login='SYSDBA') and (Password='masterkey')) then
   Result:=1
 else Result:=0;
end;

вот ее вызов из клиента:
 if f_DM.SocketConnection1.AppServer.Test('SYSDBA', 'masterkey')=1
   then ShowMessage('получилось!');
но ошибка та же самая
"Invalid variant operation" :((((((((((((((((((((((((((

что мне нужно сделать?


Sandman25   (2004-06-30 17:48:00) [2]

В COM нет типа String. Используйте OleVariant или WideString


Bukerman   (2004-06-30 17:43:00) [3]

блин, я не могу понять, подскажите плз кто-нибудь...
я так и делаю, вот моя функция на сервере, объявленная в секции public:

function TAppSrv.Test(Login, Password: string):Boolean;
begin
 if ((Login='SYSDBA') and (Password='masterkey')) then
   Result:=True
 else Result:=False;
end;

вот вызов из клиента:

 if f_DM.SocketConnection1.AppServer.Test('SYSDBA', 'yar')
   then ShowMessage('получилось!');

выдается ошибка "Invalid variant operation", что я делаю не так?


Sandman25   (2004-06-30 16:39:00) [4]

...AppServer.CheckLogin(Encrypt(edUser.Text), Encrypt(edPassWord.Text));


Bukerman   (2004-06-30 16:36:00) [5]

я эту процедуру, вернее функцию, уже написал, с двумя входными параметрами: логин и пароль, возвращает - true или false.
но как мне в нее передать эти параметры с клиента?


bushmen   (2004-06-30 16:31:00) [6]

Тебе я в [1] ответил


Bukerman   (2004-06-30 15:48:00) [7]

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


bushmen   (2004-06-29 18:02:00) [8]

>я с делфями недавно работаю

А чем тебе 2-х уровневая система не устраивает?


Bukerman   (2004-06-29 17:32:00) [9]

не могу я догнать что-то....
я с делфями недавно работаю, примерно можно увидеть, что требуется?

заранее спасибо.


bushmen   (2004-06-29 17:24:00) [10]

>Я не могу понять с чем сравнивать, с логином и паролем, кот. прописан в компоненте что ли

Сравнивать будешь не ты, а сервер БД, которому ты будешь совать логин и пароль пользователя, которые он введет на клиенте!


Bukerman   (2004-06-29 17:13:00) [11]

> Какой м.б. LoginPrompt на клиенте в трехзвенном приложении ?
> На сервере приложений естественно. В противном случае, если > > не поставить False, окно с запросом пароля будет выскакивать > на сервере приложений.


LoginPrompt если не знаешь есть на SocketConnection

> Что значит какого плана ?
> Не можешь  написать функцию, которая на вход получает логин, > пароль и возвращает код ответа ?


Я не могу понять с чем сравнивать, с логином и паролем, кот. прописан в компоненте что ли? И чем не устраивает стандартная форма логин/пароль, зачем свою создавать?


Vlad   (2004-06-29 17:06:00) [12]


> Bukerman ©   (29.06.04 17:01) [2]

Какой м.б. LoginPrompt на клиенте в трехзвенном приложении ?
На сервере приложений естественно. В противном случае, если не поставить False, окно с запросом пароля будет выскакивать на сервере приложений.

> И процедуру какого плана, по какому принципу она будет возвращать
> данные??

Что значит какого плана ?
Не можешь  написать функцию, которая на вход получает логин, пароль и возвращает код ответа ?


Bukerman   (2004-06-29 17:01:00) [13]

что-то я не понял...
LoginPrompt поставить в False где, на сервере или на клиенте?
И процедуру какого плана, по какому принципу она будет возвращать данные??
Или ткни пальцем туда, где это проскакивало, я найти что-то не могу.....


bushmen   (2004-06-29 16:51:00) [14]

Тут как-то проскакивало. Надо LoginPromt поставить в False, на клиенте самому сделать форму запроса пароля, а на сервере приложений создать процедуру, которая будет проверять наличие пароля на сервере и возвращать на клиента True или False


Наверх

Титульная страница Поиск, карта сайта Написать письмо