You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

WAMセッションを管理するためのSessionStatusプロパティを理解しておくことは重要です。
以下は、セッションを管理するWAMの典型的な例です。
FUNCTION OPTIONS(DIRECT)BEGIN_COM ROLE(*EXTENDS #PRIM_WAM) SESSIONSTATUS(Active) SESSIONTIMEOUT(300) *The following line declares Session state #CUSTNAME fieldWEB_MAP FOR(*NONE) FIELDS(#CUSTNAME) OPTIONS(*PERSIST) WEBROUTINE NAME(Start) DESC('Initial Page') OnEntry(*SessionStatus_None) WEB_MAP FOR(*OUTPUT) FIELDS(#USERID #PASSWORD)ENDROUTINE WEBROUTINE NAME(Logon) DESC('Logon Page') OnEntry(*SessionStatus_None)WEB_MAP FOR(*INPUT) FIELDS(#USERID #PASSWORD)… Some authentication logic, if authentication fails can TRANSFER back to Start page  The following line will create a session, when WEBROUTINE exits#COM_SELF.SessionStatus := Active TRANSFER TOROUTINE(WelcomePage)ENDROUTINE WEBROUTINE NAME(WelcomePage) DESC('Welcome Page')ENDROUTINE WEBROUTINE NAME(Logoff) DESC('Logoff page')#COM_SELF.SessionStatus := InvalidENDROUTINE  The following event handler will handle invalid sessions and* TRANSFER back to starting page, for logonEVTROUTINE HANDLING(#COM_OWNER.SessionInvalid) OPTIONS(*NOCLEARMESSAGES *NOCLEARERRORS)TRANSFER TOROUTINE(Start)ENDROUTINE END_COM

  • SessionStatusは、Activeに設定されています。デフォルトでは、このWAMの中にあるすべてのWEBROUTINEの実行前に、セッションが有効になっている必要があります。SessionTimeoutは、5分です。
  • 2つのWEBROUTINE (StartとLogon)では、OnEntry(*SessionStatus_None)キーワードによって、SessionStatusがNoneに上書きされています。Start WEBROUTINEは、ログオンの詳細情報を入力するためのページを表示します。これは最初のページなので、有効なセッションがあってもなくても実行する必要があります。したがって、SessionStatusをNoneにします。
  • Logon WEBROUTINEは、Startページでログオン・ボタンがクリックされたときに呼び出されます。その時点では、まだ有効なセッションが存在しないので、このWEBROUTINEについても、セッションなしで実行できるように設定する必要があります。
  • Logonは、ユーザーIDとパスワードの検証を行い、それらが有効な場合は、SessionStatusをActiveに設定します。SessionStatusをNoneからActiveに設定するので、Logon WEBROUTINEが終了すると、新しいセッションが作成されます。
  • Logon WEBROUTINEは、WelcomPage WEBROUTINEへのTRANSFERを実行します。この時点ではアクティブなセッションがあるので、(アクティブなセッションを必要とする)WelcomePageの実行が可能になります。WelcomePageが終了すると、新しいセッションのセッション・キーがブラウザーに送り返されます。これ以降、同じブラウザーから新しいWEBROUTINE要求が出されるたびに、そのセッション・キーがサーバーに送られ、サーバーがセッションを識別できるようになります。
  • StartページへのTRANSFERを実行するだけのSessionInvalidハンドラーもあります。このハンドラーが呼び出されるのは、セッション・キーが存在しないか無効な状態、またはセッション・キーは有効でもセッションの有効期限が切れた状態(つまり、要求が出されない時間が5分を超えた状態)でWEBROUTINEを呼び出そうとしたときです。セッションが無効または有効期限切れの場合は、ユーザーIDとパスワードを入力するためのStartページが必ずブラウザーに表示されます。
  • 確実にセッションを無効にするためのログアウト・ボタンやメニューをWAMアプリケーションで用意することもできます。その場合は、Logoff WEBROUTINEが呼び出され、SessionStatusがInvalidに設定され、WEBROUTINEの終了時にセッションが無効になります。
  • No labels