前へ
前へ
 
次へ
次へ

セッションIDにゼロを使用したブックマークの容易化

アプリケーション内のページが公開されていて認証の必要がない場合、セッションIDとしてゼロを使用することで、アプリケーション・ユーザーは容易にページをブックマークできます。

認証の必要がないアプリケーション・ページは、セッションIDがゼロ(単一の数字0)であるf?q URLを使用してアクセスできます。ブラウザにURLを入力するか、またはセッションIDに0を含むリンクをクリックしてページをリクエストすると、Application Expressエンジンは新しいセッションIDを割り当て、新しいセッションIDを含むセッションCookieをブラウザに送信します。アプリケーションのパブリック・ページを介してナビゲートすると、パブリック・ページへの生成済リンクすべてにセッションID0が含まれており、パブリック・ページへのブランチすべてに、表示されているセッションIDに0を使用する新しいURLが含まれていることがわかります。ただし、Application Expressエンジンは、バックグラウンドでカレント・セッションIDとしてCookieのセッションIDを使用してセッション・ステートを指定します。

カレント・セッションIDを非表示にする場合にこの機能は有効です。セッションIDを非表示にすると、ブックマーク・リンクにセッションIDを含めなくてもページをブックマークできるようになります。さらに優れた点として、セッションIDにゼロを使用すると、実際のセッションIDを検索エンジンから見えないようにします。

アプリケーションのセッションIDとしてゼロを使用するには、ゼロ・セッションIDを含むリンクを少なくとも1つ生成する必要があります。このリンクを使用することでゼロ・セッションIDメカニズムが開始されます。1つの方法として、アプリケーションのホームページでゼロ・セッションIDを含む単一の静的リンクを提供する方法があります。たとえば、通常はページ2へのリンクにf?p=&APP_ID.:2:&APP_SESSIONをコード化するところで、f?p=&APP_ID.:2:0をコード化します。

APEX_UTIL.PREPARE_URLについて

Oracleには、f?p構文を使用してアプリケーション・ページにアンカーを生成する際に開発者がPL/SQLを使用するためのユーティリティの機能があります。アプリケーションのPL/SQLでゼロ・セッションIDが要求される可能性のあるf?pアンカーが作成されるたびに、APEX_UTIL.PREPARE_URLを使用します。詳細は、Oracle Application Express APIリファレンスの「PREPARE_URL」を参照してください。

ゼロ・セッションID機能の動作方法

ゼロ・セッションID機能では、HTMLにアンカーを持つページ(テンプレートやHTMLリージョンなど)がサポートされます。Application Expressエンジンがf?pアンカーに直面した場合に、ある基準を満たしていると、そのアンカーを認識してセッションIDをゼロに置き換えます。

Application Expressエンジンは、次のいずれかのパターンを検出した場合に、セッションIDコンポーネントをゼロに置き換えます。

ゼロ・セッションIDに置換される候補となるHTMLのパターンには、次のものがあります。

これらの例では、アプリケーションがゼロ・セッションIDモードで実行され、ユーザーが公開ユーザーである場合に、パターン&APP_SESSION.(または&SESSION.(非表示))がゼロに置き換えられます。次のPL/SQL式がtrueの場合に、ユーザーは公開ユーザーであるとみなされます。

:app_user in ('nobody','HTMLDB_PUBLIC_USER','PUBLIC_USER','ANONYMOUS','APEX_PUBLIC_USER')"