好吧,我正在看一下RAD XE2与IDE的示例。 另外在互联网上我发现: Monitoring and Controlling DataSnap TCP/IP Connections
我的问题是如何访问有关用户的信息:ipaddress用户名等。这是
中的内容 FConnections.Add(TIdTCPConnection(Event.Connection), Event.Channel);
为了在应用服务器中显示一个网格或连接用户的东西。 我用sql查询创建一个函数来验证用户是否有效。
function UsuarioValido(User,Password :string):boolean;
begin
server:=TServerMethods1.Create(nil);
with server.ListaU do
begin
Close;
ParamByName('u').AsString:=User;
ParamByName('P').AsString:=Password;
ExecSQL();
Open;
if IsEmpty then
begin
Result:=false;
end
else
Result:=true;
end;
end;
然后在userauthenticate事件我有:
procedure TServerContainer1.DSAuthenticationManager1UserAuthenticate(
Sender: TObject; const Protocol, Context, User, Password: string;
var valid: Boolean; UserRoles: TStrings);
begin
valid := UsuarioValido(User, Password);
if valid then
begin
with server.cdslistado do
begin
Append;
server.cdslistadousuario.AsString:=User;
server.cdslistadoip.AsString:='121';
Post;
end;
end;
end;
正如你所看到的是一个clientdataset,我插入了当前连接的名称和ip,以便在dbgrid中显示它。但是我无法看到dbgrid的变化。
我找到了其他选择:
TDSSessionManager.Instance.AddSessionEvent(
procedure(Sender: TObject; const EventType:
TDSSessionEventType; const Session: TDSSession)
begin
case EventType of
SessionCreate:
SessionInicio(Session);
SessionClose:
SessionFin(Session);
end;
end);