相关疑难解决方法(0)

将SQL登录凭据传递给Delphi Datasnap服务器的最有效方法?

使用Delphi XE使用Datasnap构建一个相对简单的数据库应用程序.

由于我的应用程序中的某些安全性是在数据库级别处理的,因此我需要将用户的SQL凭据从我的客户端应用程序传递到我的Datasnap服务器.

(我想尽可能使Datasnap服务器无状态,所以要认识到每次调用我都必须这样做.)

我在客户端使用ClientDatasets(CDS),因此我可以使用OnBeforeGetRecords将OwnerData OleVariant中的数据从客户端上的CDS传递到服务器上相应的TDataSetProvider.但这意味着每个数据模块上的每个CDS都必须有一个事件来执行此操作,这看起来很麻烦且不实用.我不禁感到必须有一种方法将消息传递给服务器,而不是更高级别.

在服务器端的DSServerClass级别,我真正喜欢的是这样的:

Procedure TMyServerContainer.MyServerClassCreateInstance(DSCreateInstanceEventObject: TDSCreateInstanceEventObject); 
begin 
// Server detects request for data from client app 
fUsername := GetUsernameFromClientSomehow; 
fPassword := GetPasswordFromClientSomehow;

// create data modules and initialise
MyDataModule := TMyDataModule.Create(nil); 
MyDataModule.InitialiseWithSQLCredentials(fUsername, fPassword); 
DSCreateInstanceEventObject.ServerClassInstance := MyDataModule; 
End;
Run Code Online (Sandbox Code Playgroud)

Authentication Manager组件可以帮助我吗?还有其他想法吗?还是我坚持使用OnBeforeGetRecords?

非常感谢.

delphi datasnap

5
推荐指数
1
解决办法
1365
查看次数

标签 统计

datasnap ×1

delphi ×1