Не работает смена пароля через IBSecurity

Администирование клиентской и серверной части InterBase, Firebird, Yaffil. Настройка файла конфигурации и т.п.

Модераторы: kdv, Alexey Kovyazin

Ответить
psa247
Сообщения: 2
Зарегистрирован: 28 фев 2008, 21:35

Не работает смена пароля через IBSecurity

Сообщение psa247 » 28 фев 2008, 21:42

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

Ход такой
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;

andycat
Сообщения: 65
Зарегистрирован: 22 фев 2005, 12:06

Сообщение andycat » 06 мар 2008, 16:31

например мой вариант - работает

Код: Выделить всё

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;

psa247
Сообщения: 2
Зарегистрирован: 28 фев 2008, 21:35

Сообщение psa247 » 07 мар 2008, 18:31

Да, помогло, спасибо
:D

Ответить