Session
Session オブジェクトは Session
コマンドによって返されます。 このオブジェクトは、カレントユーザーセッションを管理するためのインターフェースをデベロッパーに対して提供し、コン テキストデータの保存、プロセス間の情報共有、セッションに関連したプリエンプティブプロセスの開始などのアクションの実行や、アクセス権 の管理を可能にします。
セッションの種類
このクラスは 3種類のセッションをサポートしています:
- Webユーザーセッション: プロジェクトにおいてスケーラブルセッションが有効化されている 場合、Webユーザーセッションが利用可能です。 これらは Web および REST 接続に使用され、権限を割り当てることができます。
- リモートクライアントユーザー セッション: クライアント/サーバーアプリケーションでは、リモートユーザーは、サーバー上で管理される独自のセッションを持ちます。
- ストアドプロシージャーセッション: サーバ上で実行されるすべてのストアドプロシージャーは、同じ仮想ユーザーセッションを共有します。
Session
オブジェクトにおいて利用可能なプロパティと関数は、セッションの種類に依存します。
概要
.clearPrivileges() : Boolean 対象セッションに紐づいているアクセス権をすべて削除し、実行が成功した場合に true を返します。 |
.expirationDate : Text セッションcookie の有効期限 |
.getPrivileges() : Collection 対象セッションに紐づいている全アクセス権の名称のコレクションを返します |
.hasPrivilege( privilege : Text ) : Boolean 対象セッションに privilege のアクセス権が紐づいていれば true、でなければ false を返します |
.id : Text サーバー上のセッションの一意な識別子 (UUID) を格納します |
.idleTimeout : Integer 対象セッションが 4D によって終了されるまでの、非アクティブタイムアウト時間 (分単位) |
.info : Object サーバー上のリモートクライアントまたはストアドプロシージャーセッションの情報を格納します |
.isGuest() : Boolean アクセス権のないゲストセッションの場合は true を返します |
.setPrivileges( privilege : Text ) : Boolean .setPrivileges( privileges : Collection ) .setPrivileges( settings : Object ) : Boolean 引数として渡したアクセス権やロールをセッションと紐づけ、実行が成功した場合に true を返します |
.storage : Object セッションのすべてのプロセスで利用可能な情報を保存しておける共有オブジェクトを格納します |
.userName : Text セッションと紐づいたユーザー名 |
Session
履歴
リリース | 内容 |
---|---|
20 R5 | リモートクライアントとストアドプロシージャーセッションをサポート |
18 R6 | 追加 |
Session : 4D.Session
引数 | 型 | 説明 | |
---|---|---|---|
戻り値 | 4D.Session | <- | Session オブジェクト |
説明
Session
コマンドは、カレントのユーザーセッションに対応する Session
オブジェクトを返します。
コマンドを呼び出したプロセスによって、カレントユーザーセッションは次のいずれかです:
- Webセッション (スケーラブルセッションが有効化されている 場合)
- リモートクライアントセッション
- ストアドプロシージャーセッション
詳細については、セッションの種類 の段落を参照ください。
サポートされていないコンテキスト (シングルユーザーアプリケーション、スケーラブルセッションが無効...) から呼び出されると、コマンドは Null を返します。
Webセッション
Webセッションの Session
オブジェクトは、どの Webプロセスからも利用できます:
On Web Authentication
、On Web Connection
、およびOn REST Authentication
データベースメソッド- セミダイナミックページにおいて、4Dタグ (4DTEXT, 4DHTML, 4DEVAL, 4DSCRIPT/, 4DCODE) を介して処理されるコード
- "公開オプション: 4DタグとURL(4DACTION...)" を有効化されたうえで、4DACTION/ URL から呼び出されたプロジェクトメソッド
- モバイルリクエスト用の
On Mobile App Authentication
とOn Mobile App Action
データベースメソッド - RESTリクエストで呼び出された ORDA関数。
Webユーザーセッションの詳細については、Webサーバーセッション の章を参照ください。
リモートクライアントセッション
リモートクライアントの Session
オブジェクトは、次のいずれかから利用できます:
- サーバー上で実行 属性を持つプロジェクトメソッド (クライアントプロセスの "双子" プロセスで実行されます)
- トリガー
On Server Open Connection
およびOn Server Shutdown Connection
データベースメソッド
リモートユーザーセッションの詳細については、リモートクライアントユーザーセッション の段落を参照ください。
ストアドプロシージャーセッション
すべてのストアドプロシージャープロセスは、同じ仮想ユーザーセッションを共有します。 ストアドプロシージャーの Session
オブジェクトは、次のいずれかから利用できます:
Execute on server
コマンドで呼び出されるメソッドOn Server Startup
、On Server Shutdown
、On Backup Startup
、On Backup Shutdown
、およびOn System event
データベースメソッド
ストアドプロシージャーの仮想ユーザーセッションに関する情報については、4D Serverと4Dランゲージ のページを参照ください。
例題
"公開オプション: 4DタグとURL(4DACTION...)" を有効にした action_Session
メソッドを定義しました。 ブラウザーに次の URL を入力してメソッドを呼び出します:
IP:port/4DACTION/action_Session
//action_Session メソッド
Case of
:(Session#Null)
If(Session.hasPrivilege("WebAdmin")) // hasPrivilege 関数を呼び出します
WEB SEND TEXT("4DACTION --> セッションは WebAdmin です")
Else
WEB SEND TEXT("4DACTION --> セッションは WebAdmin ではありません")
End if
Else
WEB SEND TEXT("4DACTION --> セッションは null です")
End case
参照
.clearPrivileges()
履歴
リリース | 内容 |
---|---|
18 R6 | 追加 |
.clearPrivileges() : Boolean
引数 | 型 | 説明 | |
---|---|---|---|
戻り値 | Boolean | <- | 実行が正常に終わった場合には true |
説明
この関数は、リモートクライアントとストアドプロシージャーのセッションでは何もせず、常に false を返します。
.clearPrivileges()
関数は、対象セッションに紐づいているアクセス権をすべて削除し、実行が成功した場合に true を返します。。 結果的に、当該セッションは自動的にゲストセッションになります。
例題
// Webユーザーセッションを無効にします
var $isGuest : Boolean
var $isOK : Boolean
$isOK:=Session.clearPrivileges()
$isGuest:=Session.isGuest() // $isGuest は true
.expirationDate
履歴
リリース | 内容 |
---|---|
18 R6 | 追加 |
.expirationDate : Text
説明
このプロパティは、Webユーザーセッションの場合にのみ使用できます。
.expirationDate
プロパティは、セッションcookie の有効期限を返します。 値は ISO 8601標準に従って文字列で表現されます: YYYY-MM-DDTHH:MM:SS.mmmZ
。
このプロパティは 読み取り専用 です。 .idleTimeout
プロパティ値が変更された場合、有効期限は自動的に再計算されます。
例題
var $expiration : Text
$expiration:=Session.expirationDate // 例: "2021-11-05T17:10:42Z"
.getPrivileges()
履歴
リリース | 内容 |
---|---|
20 R6 | 追加 |
.getPrivileges() : Collection
引数 | 型 | 説明 | |
---|---|---|---|
戻り値 | Collection | <- | アクセス権の名称 (文字列) のコレクション |
説明
.getPrivileges()
関数は、対象セッションに紐づいている全アクセス権の名称のコレクションを返します。
リモートクライアントおよびストアドプロシージャーセッションでは、この関数は "WebAdmin" のみを含むコレクションを返します。
権限は、setPrivileges()
関数によって、セッションに割り当てられます。
例題
以下の roles.json
が定義されています:
{
"privileges":[
{
"privilege":"simple",
"includes":[
]
},
{
"privilege":"medium",
"includes":[
"simple"
]
}
],
"roles":[
{
"role":"Medium",
"privileges":[
"medium"
]
}
],
"permissions":{
"allowed":[
]
}
}