Oracle で ASP.NET のパーソナライズを利用する。
ASP.NETではWebパーツの配置情報などをユーザーごとにパーソナライズする機能が備わっています。
パーソナライズのデータの保存には、通常SQLServerが利用されるのですが、Oracleでも同様の機能を利用することができます。
なにはともあれテーブルの準備
Oracleのセッションステートサーバーを利用した場合と同様に、ODT.NETをインストールすると、パーソナライズを行うためのテーブルやプロシージャの定義情報が、下記のフォルダーに格納されています。
%ORALCE_HOME%/ASPNET/SQL
今回は、パーソナライズ機能を利用したいので、次のSQLを実行します。すでにInstallAllOracleASPNETProviders.sqlなどを実行してテーブルやプロシージャが存在している場合はこの作業は不要です。
- InstallOracleASPNETCommon.sql
- InstallOraclePersonalization.sql
セッションステートサーバーを作成した場合と同様なのですが、上記のSQLから他のスクリプトを呼び出したりしているので、カレントディレクトリを移動してから実行する必要があるので注意しましょう。
SQLを実行すると、このあたりのテーブルが作成されるので確認して下さい。
参考:Oracle Providers for ASP.NETの個別構成
設定情報の変更
パーソナライズを行うには、確実にユーザーが誰であるかを確認し、ユーザーの情報をデータベースに保存する設定を行う必要があります。Web.configにOracleのパーソナライズプロバイダーの設定を追加しましょう。必要な項目は、次の3点です。
- フォーム認証の設定
- データベースへの接続情報設定
- 利用するパーソナライズプロバイダーの設定
<?xml version="1.0"?>
<configuration>
<!-- 接続文字列の設定 -->
<connectionStrings>
<add name="OracleAspNetConString" connectionString="****" />
</connectionStrings>
<system.web>
<!-- フォーム認証の設定 -->
<authentication mode="Forms">
<forms name="myAuth" loginUrl="~/Login.aspx" protection="All"
timeout="1440" slidingExpiration="true" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<!-- パーソナライズプロバイダーの設定 -->
<webParts>
<personalization defaultProvider="myPersonalizationProvider">
<providers>
<add name="myPersonalizationProvider"
connectionStringName="OracleAspNetConString"
applicationName="myApp"
type="Oracle.Web.Personalization.OraclePersonalizationProvider,
Oracle.Web, Version=4.112.1.2,
Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</providers>
</personalization>
</webParts>
</system.web>
</configuration>
- personalization@defaultProvider でページでデフォルトで使用するプロバイダーを設定しておくと、WebPartManegerで毎回どのプロバイダーを利用するかを指定しなくていいので便利です。
まぁやることはないでしょうが、personalizationには複数のプロバイダーを設定できます。
OraclePersonalizationProviderがどのようなプロパティーを持っているのかは、OTNのヘルプで確認できます。
これだけやれば、後はSQLServerを使っている時とやることは同じです。
認証ページを作って、WebパーツマネージャーとWebパーツを配置してパーソナライズができます。