<< ActiveXコントロールのアクティブ化 | main | [ADO.NET] 汎用DBプロバイダ >>

2006/05/06 (土)

[ASP.NET] パーソナライズ機能コントロール

Webパーツを利用してパーソナライズ機能を持たせるためには、パーソナルデータを読み書きするため、認証によってユーザが識別されなければならない。

【ログイン・ログアウトが必要なアプリケーション】
①匿名アクセスを禁止したサイトの場合・・・サイトにアクセス時に認証されるためユーザーが識別される。
 Ⅰ.IIS設定の認証方法「匿名アクセス」チェックをはずす
 Ⅱ.web.config 設定
   <identity impersonate="true"/>
   <authentication mode="Windows" />
②匿名アクセスを許可した場合・・・WebアプリケーションをForms認証によって作り込む。
 Ⅰ.IIS設定の認証方法「匿名アクセス」チェックをする
 Ⅱ.web.config設定
   <authentication mode="Forms" />
   <authorization>
      <deny users="?" />
   </authorization>
 Ⅲ.Forms認証で組み込む
   System.Web.Security.FormsAuthentication.RedirectFromLoginPage
   System.Web.Security.FormsAuthentication.SignOut

【パーソナル情報保存用のデータベース】
MemberShip関連(Login・CreateUser***)、WebParts等によるパーソナライズ機能等は状態保存に規定ではSQL Server2005 Expressが必要になる。
しかし、開発環境と運用環境が異なると書き込み権限絡みでうまく動かない場合がある。(偽装やWindows認証/Form認証等の違いなど)
→ASPNETDBへの書込み可能権限の設定
 App_Dataフォルダへ、NETWORK SERVICE権限を与えるなど

※外部データベースを利用するには
①サーバにSQL Server2005/2000がインストールされているのであれば aspnet_regsqlツールで必要なデータベースが作成可能。
②web.config に外部データベースを利用するための設定を追加する。(配下)
<connectionStrings>
<remove name="LocalSqlServer"/><!-- machine.configの設定を解除 -->
<add name="LocalSqlServer"
connectionString="Data Source=サーバ名;Initial Catalog=データベース名;Integrated Security=True"
providerName="System.Data.SqlClient"/>
</connectionStrings>