德尔福DataSnap服务器用户认证(Delphi Datasnap Server User Aut

2019-07-30 15:45发布

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

我缺少的东西吗?

谢谢,彼得

Answer 1:

解决的办法是使用正确的价值描述。

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

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

通过这种方式, Authentication Manager获取正确的用户名和密码。



文章来源: Delphi Datasnap Server User Authentication