GeneXus Access Manager (GAM) を使用するアプリケーションは、
[ Integrated Security Level ] プロパティに応じて、プライベートおよびパブリックのページを持つことができます。パブリックページでは、
[ Integrated Security Level ] プロパティが None に設定されています。
プライベートとパブリックの両方の Web ページを持つアプリケーションでは、ユーザーがパブリックページにアクセスしても、セッションを維持できます (オプション)。
ユーザーがアプリケーションにログインしていなくても (アプリケーションのパブリックページにのみアクセスしていたため)、役立つ情報 (ほとんどの場合統計目的) と一緒にセッションを保存できます。以降、このセッションを「匿名セッション」と呼びます。
匿名セッションは、認証されていないアプリケーションユーザーに付与される GAM セッションです。
他のセッションと同じようにトークンで識別され、 [ Date ] 、 [ InitialURL ] 、 [ LastURL ] などのプロパティを持ちます。
GAMRepositoryConfiguration Web パネル (GAM Example フォルダ内) は、このプロパティを使用したサンプルです。
これを GeneXus コードで (
GAM API を使用して) 使用する方法は、次のとおりです:
&Repository.GiveAnonymousSession = &GiveAnonymousSession // GAMBoolean データタイプ。
この例では、ユーザーが認証されるまでの間、サイトでのユーザーによるブラウズアクティビティを記録します。
ユーザーがログオンすると、同じセッションがユーザーに付与され (同じトークンが使用され)、取得していた過去の情報が保存されて、新しいセッション情報に追加されます。
これはポータルで典型的な例で、「操作可能性」はアクセスしたページの統計を取得するために必要な情報です。
詳しく説明します:
この例では、「匿名セッション」は、ユーザーがログオンするまでの間、匿名ユーザーがアクセスしたすべてのパブリック Web ページの情報が格納されます。
1.リポジトリの設定を編集し、(
Backoffice GAM を使用)、 [ セッション ] タブを選択し、次のように設定します:
[ 匿名セッションを許可 ] = TRUE (チェックボックスをクリック)
[ セッションの統計を生成 ] = 最小限 (または詳細)
2.安全でない Web オブジェクトに次のようにプログラムします:
&SessionValid = GAMSession.IsValid(&Session, &Errors) //&SessionValid はブール値、&Session は GAMSession データタイプ。
If &SessionValid
&sessionToken = &Session.Token
&sessionInitialURL = &Session.InitialURL
&sessionLastURL = &Session.LastURL //現在の Web ページを取得。
&sessionStatus = &Session.Status
&sessionIsAnonymous = &Session.IsAnonymous //セッションが匿名かどうかを確認。
&sessionDate = &Session.Date
else
do 'DisplayMessages'
Endif
- &session.isvalid が実行されると、GAM はセッションのトークンを返します。
ユーザーがログインしていない場合 (または、セッションの有効期限が切れた場合)、匿名セッションとして識別されます (IsAnonymous フラグが True に設定されます)。
注:
セッションの有効期限が切れた直後に GAMSession.get() が実行されると、エラー (GAM 21 Session finished, log in again.) が発生します。これは、新しい匿名セッションがまだ作成されていないためです。その次に GAMSession.get() が実行されると、匿名セッションが作成され、エラーは発生せず、新しいセッションが返されます。
GAM リポジトリの機能とプロパティ