JavaScript クライアント セッション

提供: RAD Studio
移動先: 案内検索

DataSnap REST への移動


DataSnap の JavaScript REST クライアントでは、最初のサーバー メソッドを呼び出したあと、その呼び出しがユーザー認証に成功した場合は、セッション ID を取得します。認証に成功し権限付与に失敗した場合でも、セッション ID は取得されます。

セッション ID は $$SessionID$$ という変数に格納されます。この変数は最初は ServerFunctionExecutor.js に定義されています。

セッションの消失

セッションが失われると、クライアントは $$SessionID$$ の値をクリアします。サーバー メソッドを次回呼び出したときに、新しいセッションが作成されます。

有効期限切れ

セッションは、サーバーで定義された一定の期間が経過した後、有効期限が切れることがあります。この期間のデフォルト値は 20 分です。サーバーは、クライアントにセッション ID を渡すとき、そのセッションの有効期限も渡します。これは、セッション ID がいつ無効になるかをクライアント側で知り、有効期限の切れたセッションのセッション ID をサーバーに渡すことを避ける(少なくとも、その可能性を減らす)のに使用されます。期限切れのセッション ID をサーバーに渡すと、サーバー メソッドの呼び出しが失敗し、セッションの有効期限が切れたことを示す適切なメッセージが表示されます。有効期限切れはサーバー メソッドの呼び出しがないことで判断されるため、サーバー メソッドを呼び出すたびに、セッションは更新されます。

ユーザーによる終了

ServerFunctionExecutor インスタンスに対して closeSession 関数を呼び出すことで、クライアント コードから手動でセッションを閉じることができます。[Proxy].executor を呼び出すことで、Proxy クラス インスタンスからエグゼキュータのインスタンスへのアクセスを取得できます。使用可能な ClientChannel インスタンスがあれば、そこにも使用可能な closeSession 関数があります。

管理

サーバーは、いつでもセッションを終了できます。その後、クライアント コードでそのセッション ID を使用してサーバー上の何かを呼び出そうとした場合は、セッションの有効期限が切れたことを示す JSON 応答が返されます。

ページからの移動

デフォルトでは、セッション ID はクッキーに格納されないため、ページを更新したり、ページから出て再び戻ったり、あるいはマルチページ アプリケーションでページ間を移動したりすると、新しいセッションが作成され、古いセッションは、有効期限が切れるまで使用されないままサーバー上に残されます。

セッションの保持

ページの読み込みから次の読み込みにかけてセッション ID を記憶しておくには、セッション クッキーを有効にする必要があります。それには、たとえば以下を呼び出します。


initSessionData(true, "chat_");

これを呼び出すのは、ServerFunctionExecutor.js ファイルがインクルードされてからページが初めて読み込まれるときでなければなりません。この呼び出しの結果、セッション ID がクッキーに格納され、サーバー上でセッションの有効期限が切れるのと同時にクッキーの有効期限も切れるように設定されます。2 つ目のパラメータは、一般的なクッキー ID(dssessionid)の前に付加される文字列です。つまり、initSessionData(true, "chat_") を呼び出すと、クッキーが有効になり、使用されるクッキーには "chat_dssessionid" というキーが付くようになります。これにより、どのアプリケーションがどのセッション ID/クッキーを使用しているかを完全に管理できるようになります。さらに、ページの更新/再読み込みが行われてもクッキー ID の接頭辞を何らかの方法で存続させる場合は、同じクライアントの複数のインスタンスにそれぞれ独自の一意なセッション ID を持たせることも可能です。

関連項目