Форум: "Базы";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];
ВнизСмена пароля в IBase Найти похожие ветки
← →
psa247 (2008-02-25 18:38) [0]Скажите, почему не результат функция возвращает True
но пароль все равно не меняется
function TData.ChangePass(param : TUser): boolean;
begin
try
CloseConnections;
OpenConnections(SuperUser);
IBSecurityService.Active := True;
IBSecurityService.UserName := param.Name;
IBSecurityService.Password := param.Pass;
IBSecurityService.FirstName := "";
IBSecurityService.MiddleName := "";
IBSecurityService.LastName := "";
try
IBSecurityService.ModifyUser;
Result := True;
except
Result := False;
end ;
IBSecurityService.Active := False;
except
Result := False;
end;
CloseConnections;
end;
где
type
TUser = class
Name: string;
Pass: string;
NewPass: string;
Path: string;
BaseName: string;
Right: boolean;
end;
← →
Johnmen © (2008-02-25 19:19) [1]Во-первых, что за "CloseConnections" и "OpenConnections"?
Во-вторых, не ясно, указаны ли параметры пользователя при коннекте.
И в-третьих, известный баг метода ModifyUser, приводящий к добавлению юзера, исправлен только в прошлом году в последней версии IBX.
← →
psa247 (2008-02-25 20:03) [2]procedure TData.CloseConnections;
begin
// Закрываем соединение
try
if IBDatabase <> nil then
begin
IBDatabase.Connected := False;
IBDatabase.Close;
end;
except
Application.MessageBox("Ошибка закрытия ИБ !","Внимание !",MB_ICONERROR);
end;
end;
function TData.OpenConnections(param: TUser): string;
begin
CloseConnections;
// Открываем соединение
try
if IBDatabase <> nil then
begin
IBDatabase.DatabaseName := param.Path;
IBDatabase.LoginPrompt := False;
IBDatabase.SQLDialect := 3;
IBDatabase.Params.Clear;
IBDatabase.Params.Add("CONNECT DATABASE "+param.BaseName);
IBDatabase.Params.Add("USER_NAME="+param.Name);
IBDatabase.Params.Add("PASSWORD="+param.Pass);
IBDatabase.Params.Add("lc_ctype=WIN1251");
IBDatabase.Connected := True;
Result := "";
end;
except
Result := param.Path;
if GetLastError<>0 then
Result := SysErrorMessage(GetLastError) +chr(13)+ Result;
end;
end;
SuperUser - SYSDBA
в параметре процедуры передается "пользователь" для которого меняется пароль
← →
Johnmen © (2008-02-25 21:11) [3]Интересно, ты сам то понимаешь, что пишешь?
← →
psa247 (2008-02-26 21:36) [4]
> Johnmen ©
Нет, может пояснишь ?
← →
Johnmen © (2008-02-26 22:07) [5]
> psa247 (26.02.08 21:36) [4]
> Нет, может пояснишь ?
Нет, я тоже не понимаю.
← →
psa247 (2008-02-27 17:31) [6]
> Johnmen © (26.02.08 22:07) [5]
На том и договорились. Не понимаешь - проходим мимо
← →
DjeiDi (2008-04-23 22:43) [7]Может, уже поздно, но как вариант могу предложить.
Эту часть
try
IBSecurityService.ModifyUser;
Result := True;
except
Result := False;
end ;
переписать следующим образом:
try
// здесь пробуешь
IBSecurityService.ModifyUser;
except
// если не получилось, функция возвратит ЛОЖЬ и прервется
Result := False;
Exit;
end ;
// в случае успеха, функция вернет ИСТИНУ
Result := True;
IBSecurityService.Active := False;
Ну и как другой вариант попробуй переписать функцию так
function TData.ChangePass(param : TUser): boolean;
begin
CloseConnections;
try
OpenConnections(SuperUser);
except
Result := False;
Exit;
end;
IBSecurityService.Active := True;
IBSecurityService.UserName := param.Name;
IBSecurityService.Password := param.Pass;
IBSecurityService.FirstName := "";
IBSecurityService.MiddleName := "";
IBSecurityService.LastName := "";
try
IBSecurityService.ModifyUser;
except
Result := False;
Exit;
end ;
Result := True;
IBSecurityService.Active := False;
CloseConnections;
end;
← →
Loginov Dmitry © (2008-04-23 22:52) [8]> Может, уже поздно, но как вариант могу предложить.
Насколько помнится, в IBSecurityService параметры коннекта, заданные в design-time слетают. Их нужно заново указывать в run-time.
← →
Johnmen © (2008-04-24 00:03) [9]Ё-моё, ну что за мода пошла на гробокопательство и некрофилию? Заняться что-ли нечем? Словарик англо-русский почитал бы - узнал бы много полезного. Что Джей Ди это JD, а не то букоффсочетание, коем себя обозначил...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c