2012-07-27 68 views
0

我们正在开发一个新的,我们的第一个DataSnap服务器和客户端应用程序。我已经向服务器添加了身份验证,但无法动态更改客户端连接的登录详细信息。用户和密码Delphi 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事件,我可以看到参数传递。

我错过了什么吗?

谢谢,彼得

回答

2

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

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

成为

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

这样,Authentication Manager得到正确的用户名和密码。

相关问题