Delphi Datasnap 服务器用户身份验证

问题描述 投票:0回答:1

我们正在开发一个新的、也是我们的第一个 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
,我可以看到传递的参数。

我错过了什么吗?

delphi authentication delphi-xe datasnap
1个回答
2
投票

解决方案是使用正确的值描述符。

DSConnection.Params.Values['DSAuthUser'] :=  Username;

成为

DSConnection.Params.Values['DSAuthenticationUser'] :=  Username;
DSConnection.Params.Values['DSAuthenticationPassword'] := Password;

这样

Authentication Manager
就可以获得正确的用户名和密码。

© www.soinside.com 2019 - 2024. All rights reserved.