0

我正在开发一个 3 层数据库应用程序。1.)MS SQL DB 2.)中间层 SOAP 服务器(使用 Delphi 7)连接到 DB 3.)客户端(第一个 win32 gui(使用 Delphi 7)-后来的其他平台)连接到 SOAP 服务器

我选择了一个 SOAP 服务器,以便在稍后阶段向各种客户端开放(还有一些 win32 gui 客户端将驻扎在国外 - 所以客户端需要很瘦)(这是 Bob 博士建议的)。

我是 SOAP 新手,一直在查看有关身份验证的不同示例和论文。但不能完全理解它。

我用 Delphi 的 SOAP 服务器应用程序向导制作了一个 SOAP 服务器和客户端,并添加了一个 SOAP SERVER 数据模块,添加了一个数据库连接以及一些数据集和提供程序。将客户端与 dbgrid 等连接起来,该部分工作正常。

但是我希望客户端首先登录然后能够访问数据,并且我希望服务器记录每个连接以及客户端注销或断开连接时,所以我猜我需要 sessionID 和超时。我还希望服务器能够在任何给定时间告诉客户端还有谁“连接”(或谁的会话仍处于活动状态)。我已经收集到我需要制作一个身份验证标头,但无法弄清楚我可以在哪里或谁可以获得 sessionID。我假设每次客户端连接到服务器时服务器都会生成一个 sessionID?我怎么得到这个?

任何帮助或建议/指针将不胜感激,

谢谢贾斯汀

4

3 回答 3

1

默认情况下,Soap 服务器不提供会话。您的服务器必须实现会话生命周期管理(登录/注销)等。

此处记录了一个基本解决方案:使用 Delphi 6 Web 服务管理会话

但是请注意,此解决方案远非完美(请参阅注释),例如它不提供会话超时机制。

于 2010-05-17T20:38:01.103 回答
0

好的-想通了-我没有:

InvRegistry.RegisterHeaderClass(TypeInfo(IThorPayServerDB), TAuthHeader);

在初始化


但我仍然无法弄清楚如何获取会话 ID - 或者以某种独特的方式知道哪个客户端会话登录到服务器 - 有什么想法吗?

于 2010-05-14T09:41:12.520 回答
0

Delphi XE 使用较新版本的 SOAP,也许这就是答案:

https://forums.embarcadero.com/thread.jspa?messageID=200793

于 2011-05-19T14:29:20.317 回答