![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как спросить в трехуровневом приложении логин и пароль в БД?
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