メインコンテンツまでスキップ
バージョン: 次へ

Session

Session : 4D.Session

引数説明
戻り値4D.SessionSession オブジェクト
履歴
リリース内容
20 R8スタンドアロンセッションのサポート
20 R5リモートクライアントとストアドプロシージャーセッションをサポート
18 R6追加

説明

Session コマンドは、カレントのセッションに対応する Session オブジェクトを返します。

コマンドを呼び出したプロセスによって、カレントセッションは次のいずれかです:

詳細については、Session types の段落を参照ください。

このコマンドは、以下の場合には Null を返します:

  • コマンドがWeb プロセス内で呼び出されているが、Web サーバーではスケーラブルセッションが無効化されている
  • コマンドがリモート4D から呼び出されている

Webセッション

Webセッションの Session オブジェクトは、どの Webプロセスからも利用できます:

  • On Web AuthenticationOn Web Connection、および On REST Authentication データベースメソッド
  • セミダイナミックページにおいて、4Dタグ (4DTEXT, 4DHTML, 4DEVAL, 4DSCRIPT/, 4DCODE) を介して処理されるコード
  • "公開オプション: 4DタグとURL(4DACTION...)" を有効化されたうえで、4DACTION/ URL から呼び出されたプロジェクトメソッド
  • モバイルリクエスト用の On Mobile App AuthenticationOn Mobile App Action データベースメソッド
  • RESTリクエストで呼び出された ORDA関数。

Web ユーザーセッションに関する詳細な情報については、Web Server Sessions の章を参照してください。

リモートクライアントセッション

リモートクライアントの Session オブジェクトは、次のいずれかから利用できます:

  • サーバー上で実行 属性を持つプロジェクトメソッド (クライアントプロセスの "双子" プロセスで実行されます)
  • トリガー
  • ORDA データモデル関数 (local キーワードで宣言されたものを除く)
  • On Server Open Connection および On Server Shutdown Connection データベースメソッド

リモートユーザーセッションの詳細については、リモートユーザーセッション の段落を参照ください。

ストアドプロシージャーセッション

すべてのストアドプロシージャープロセスは、同じ仮想ユーザーセッションを共有します。 ストアドプロシージャーの Session オブジェクトは、次のいずれかから利用できます:

  • Execute on server コマンドで呼び出されたメソッド
  • On Server StartupOn Server ShutdownOn Backup StartupOn Backup Shutdown、および On System event データベースメソッド

ストアドプロシージャーバーチャルユーザーセッションの詳細については、ストアドプロシージャーセッション の段落を参照ください。

スタンドアロンセッション

Session オブジェクトは、スタンドアロン(シングルユーザー)アプリケーション内の任意のプロセスから利用可能なため、4D 開発環境においてSession オブジェクトを使用することで、クライアント/サーバー用のコードを書いてテストすることができます。

スタンドアロンセッションの詳細については、スタンドアロンセッション の段落を参照ください。

Sessionとコンポーネント

Sessionプロジェクト内に配置されている異なるコンポーネント のコードから呼び出された場合には、このコマンドは呼び出しリクエストとコンテキストに応じて異なるオブジェクトを返します:

  • Web リクエストの場合、Session は常にリクエストのターゲットWeb サーバーにアタッチされているセッションを返します(コンポーネントのWeb サーバーのセッションではありません)。
  • サーバー上で実行されたリモートリクエストの場合、 Session は常にリモートユーザーにアタッチされたセッションを返します。
  • ストアドプロシージャーセッションまたはスタンドアロンセッションの場合、Session は常にシングルカレントセッションを返します(同じオブジェクトが全てのワークセッションにおいて使用されます)。

例題

"公開オプション: 4DタグとURL(4DACTION...)" 属性を有効にした action_Session メソッドを定義したとします。 ブラウザーに次の URL を入力してメソッドを呼び出します:

IP:port/4DACTION/action_Session
  //action_Session メソッド
Case of
:(Session#Null)
If(Session.hasPrivilege("CreateInvoices")) //hasPrivilege 関数を呼び出す
WEB SEND TEXT("4DACTION --> Session is CreateInvoices")
Else
WEB SEND TEXT("4DACTION --> Session is not CreateInvoices")
End if
Else
WEB SEND TEXT("4DACTION --> Session is null")
End case

参照

Session storage
Session API Desktop sessions Web server user sessions
Scalable sessions for advanced web applications (blog 記事)

プロパティ

コマンド番号1714
スレッドセーフ