セッションの終了
InterSystems IRIS® データ・プラットフォームの CSP ベースの Web アプリケーション内で、セッションは、ユーザがログアウトした場合、サーバがセッションを明示的に終了した場合、またはセッションがタイムアウトした場合に終了することがあります。
ログアウト・オプションの提供
標準的な方法としては、ユーザがログアウトできるようにするリンクまたはボタンを提供します。
このリンクかボタンを、アプリケーションのホーム・ページにリンクするように定義し、リンクの URL に IrisLogout=end を含めることをお勧めします。これで、このサーバはホーム・ページの実行を試みる前に、現在のセッションを終了します。
サーバにセッションを終了させる
アプリケーション内から、以下の方法でセッションを明示的に終了できます。
-
セッションを終了する (クライアントが停止している場合や、新しいサイトに移動する場合など) :
set %session.EndSession=1
-
ユーザをログアウトする :
do %session.Logout()
これらの手法では、サーバ上で利用可能な %session オブジェクトを使用します。これは、%CSP.SessionOpens in a new tab のインスタンスです。
セッション・タイムアウト
セッション・タイムアウトでは、指定されたセッション・タイムアウト期間内に要求を受信しなかった場合にセッションが終了します。
既定では、セッション・タイムアウトは 900 秒 (15 分) に設定されています。これは、Web アプリケーション定義により制御されます。
プログラムによるタイムアウトの変更
アプリケーション内から、%session オブジェクトの AppTimeout プロパティを設定することで、タイムアウトを変更できます。以下に例を示します。
Set %session.AppTimeout = 3600 // set timeout to 1 hour
セッション・タイムアウトを無効にするには、タイムアウト値を 0 に設定します。
セッションが存続期間中に Web アプリケーションを変更しても、セッションの移動先のアプリケーションで定義されている既定のタイムアウトに従ってタイムアウト値が更新されることはありません。例えば、既定のタイムアウト値が 900 秒の Web アプリケーション A でセッションが開始し、その後、既定のタイムアウト値が 1800 秒の Web アプリケーション B に移動した場合、セッションは 900 秒後にタイムアウトになります。
アプリケーションの変更により、セッション・タイムアウトが新しいアプリケーションに合わせて更新されるようにするには、セッション・イベント・クラスを定義します。そのクラスで、OnApplicationChange() コールバック・メソッドをオーバーライドして、%session オブジェクトの AppTimeout プロパティの更新を処理するコードを追加します。
終了動作のカスタマイズ
セッションの終了時の動作をカスタマイズするには、セッション・イベント・クラスを定義して、そのクラスの OnEndSession() コールバック・メソッドを実装します。
同様に、セッション・タイムアウト時の動作をカスタマイズするには、セッション・イベント・クラスを定義して、そのクラスの OnTimeout() コールバック・メソッドを実装します。
セッション終了の詳細
セッションが終了すると、サーバは永続的な %CSP.SessionOpens in a new tab オブジェクトを削除し、必要に応じてセッションのライセンス・カウントをデクリメントします。
また、既存のセッション・データを削除し、セッションのセキュリティ・コンテキストも削除します。
セッションがタイムアウトまたはサーバ・アクションによって終了した場合は、サーバはセッション・イベント・クラスの OnEndSession() メソッドも呼び出します (存在する場合)。