Подскажите, почему не получается сменить пароль программно ?
Ход такой
1) Отключаю всех пользователей от базы
2) Ввожу старый пароль, новый и подтверждение
3) Коннекчусь к базе со старым паролем, если все ок - делаю дисконнект и подключаюсь SYSDBA
4) Прописываю новый пароль для пользователя в параметрах
5) Через IBSecurity вызываю ModifyUser
6) Отрабатывает, но пароль не меняет
В чем может быть проблема ?
коннектов "лишних" нет
type
TUser = class
Name: string;
Pass: string;
NewPass: string;
Path: string;
BaseName: string;
Right: boolean;
end;
function TData.ChangePass(param : TUser): boolean;
begin
try
CloseConnections;
OpenConnections(SuperUser);
// IBSecurityService.ActiveUser
IBSecurityService.UserName := param.Name;
IBSecurityService.Password := param.Pass;
IBSecurityService.FirstName := '';
IBSecurityService.MiddleName := '';
IBSecurityService.LastName := '';
try
IBSecurityService.Active := True;
IBSecurityService.ModifyUser;
Result := True;
except
Result := False;
end ;
IBSecurityService.Active := False;
except
Result := False;
end;
CloseConnections;
end;
Не работает смена пароля через IBSecurity
Модераторы: kdv, Alexey Kovyazin
например мой вариант - работает
Код: Выделить всё
function TData_DB_FB.ChangeSYSDBAPassword;
begin
result:=False;
IBSecurityServiceFB.Active:=False;
if IBDatabaseFB.Connected then
IBDatabaseFB.Close;
IBSecurityServiceFB.Params.Clear;
IBSecurityServiceFB.Params.Add('user_name=sysdba');
IBSecurityServiceFB.Params.Add('password='+CurrentSYSDBAPass);
IBSecurityServiceFB.ServerName:=ServerName;
IBSecurityServiceFB.SecurityAction:=ActionModifyUser;
IBSecurityServiceFB.UserName:=CurrentUserDB;
IBSecurityServiceFB.Password:=NewSYSDBAPassword;
try
IBSecurityServiceFB.Active:=True;
IBSecurityServiceFB.ModifyUser;
result:=True;
except
on E:Exception do
ShowError('Error change SYSDBA password ',E.Message);
end;
end;