Аутентификация пользователя на сервере Delphi Datasnap
Мы разрабатываем новый и наш первый сервер DataSnap и клиентские приложения. Я добавил аутентификацию на сервер, но не могу динамически изменить данные для входа в систему с клиента. Пользователь и пароль в
procedure TServerContainer1.DSAuthenticationManager1UserAuthenticate(
Sender: TObject; const Protocol, Context, User, Password: string;
var valid: Boolean; UserRoles: TStrings);
остается пустым
В клиенте мы устанавливаем значения как таковые...
DSConnection := TSQLConnection.Create(nil);
DSConnection.DriverName := 'DATASNAP';
DSConnection.LoginPrompt := False;
DSConnection.Params.Values['port'] := Port;
DSConnection.Params.Values['HostName'] := HostName;
DSConnection.Params.Values['DSAuthUser'] := Username;
DSConnection.OnLogin := DSConnectionOnLogin;
DSProviderConnection1.SQLConnection := DSConnection;
MMLog.Log('DSConnection: ' + DSConnection.Params.Text);
DSConnection.Open;
Если я, однако, смотрю на DSConnectEventObject.ConnectProperties.Properties.Text
на сервере OnConnect
событие, я могу видеть параметры как пройденные.
Я что-то пропустил?
Спасибо Питер
1 ответ
Решение
Решение состоит в том, чтобы использовать правильные дескрипторы значения.
DSConnection.Params.Values['DSAuthUser'] := Username;
становится
DSConnection.Params.Values['DSAuthenticationUser'] := Username;
DSConnection.Params.Values['DSAuthenticationPassword'] := Password;
Таким образом, Authentication Manager
получает правильное имя пользователя и пароль.