0

3 層データベース アプリケーションを開発しています。1.) MS SQL DB 2.) DB に接続された中間層 SOAP サーバー (Delphi 7 を使用) 3.) SOAP サーバーに接続されたクライアント (最初の win32 GUI (Delphi 7 を使用) - 後で他のプラットフォーム)

後の段階でさまざまなクライアントに公開するSOAPサーバーを選択しました(また、win32 GUIクライアントの一部は海外に配置されるため、クライアントはシンである必要があります)(これはボブ博士の提案による)。

私は SOAP を初めて使用し、認証に関するさまざまな例や論文を見てきました。しかし、それについて頭を悩ませることはできません。

Delphi の SOAP サーバー アプリケーション ウィザードを使用して SOAP サーバーとクライアントを作成し、SOAP サーバー データ モジュールを追加し、データベース接続といくつかのデータセットとプロバイダーを追加しました。クライアントをdbgridなどに接続すると、その部分は正常に動作します。

しかし、クライアントが最初にログインしてからデータにアクセスできるようにし、サーバーが各接続をログに記録し、クライアントがログオフまたは切断されたときにもログを記録したいので、セッションIDとタイムアウトが必要だと推測しています. また、サーバーがクライアントに対して、他に誰が「接続」されているか (またはセッションがまだアクティブであるか) をいつでも伝えることができるようにしたいと考えています。認証ヘッダーを作成する必要があることを収集しましたが、sessionID を取得できる場所またはユーザーがわかりません。クライアントがサーバーに接続するたびに、サーバーがセッション ID を生成すると思いますか? どうすれば入手できますか?

ヘルプや提案/ポインタをいただければ幸いです。

ありがとうジャスティン

4

3 に答える 3

1

デフォルトでは、SOAP サーバーはセッションを提供しません。サーバーは、セッションのライフサイクル管理 (ログイン/ログアウト) などを実装する必要があります。

基本的な解決策は、Delphi 6 Web サービスを使用したセッションの管理に記載されています。

ただし、このソリューションは完全ではないことに注意してください (コメントを参照)。たとえば、セッション タイムアウト メカニズムは提供されません。

于 2010-05-17T20:38:01.103 に答える
0

OK-理解しました-私はしていませんでした:

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 に答える