使える!
メンバーシップ・ロール・プロファイル
     どっとねっとふぁん
      http://dotnetfan.org
          小野 修司
メンバーシップコントロール入門
 Login  - アカウントとパスワードによる認証
 CreateUserWizard  - ユーザの登録
 ChangePassword  - パスワード変更
 PasswordRecovery  - パスワードの再送
 LoginStatus  - ログイン状態表示
 LoginName  - ログイン名表示
 LoginView  - ログイン状態に応じた表示


 Web サイト管理ツール
  ユーザ、ロールの作成/アクセス規則の設定
ノンコーディングでデモシステム
 Default.aspx
   LoginStatus
   LoginName
   ChangePassword
 Login.aspx
   Login
   CreateUserWizard

 Web サイト管理ツール
   認証の種類 - インターネットから
   アクセス規則の作成 - 匿名ユーザを拒否

 ASPNETDB.MDF
   ユーザ情報を格納するデータベース(自動作成)
メンバーシップの基礎
 メンバーシップとは
  ユーザを個別に認証/承認する仕組み
 認証
  ユーザを確認する
  ASP.NET による Form 認証時にメンバーシップが有効
    (参考)
    ASP.NET における認証の種類
       Windows 認証、 Form 認証、 Passport 認証
    IIS における認証の種類
       匿名アクセス、基本認証、統合 Windows 認証
 承認
  ページへのアクセス権を確認する
    ユーザに対して許可/拒否
認証/承認のタイミング
   アプリケーションイベント( HttpApplication クラス)
     すべてのリクエストに対して順を追って発生( Http パイプライン)
       BeginRequest             リクエストに対する処理の開始時に発生
       AuthenticateRequest      認証の開始時に発生
       PostAuthenticateRequest  認証の終了時に発生
       AuthorizeRequest         承認の開始時に発生
       PostAuthorizeRequest     承認の終了時に発生
       ResolveRequestCache      キャッシュの処理の開始時に発生
       PostResolveRequestCache  キャッシュの処理の終了時に発生
       PostMapRequestHandler    ハンドラの生成後に発生
       AcquireRequestState      セッション等の状態の取得時に発生
       PostAcquireRequestState  セッション等の状態の取得後に発生
       PreRequestHandlerExecute ハンドラの実行前に発生
             ( Page クラスの処理)
         PostRequestHandlerExecute   ハンドラの実行後に発生
         ReleaseRequestState         セッション等の状態の開放時に発生
         PostReleaseRequestState     セッション等の状態の開放後に発生
         UpdateRequestCache          キャッシュの状態更新時に発生
         PostUpdateRequestCache      キャッシュの状態更新後に発生
         EndRequest                  リクエストに対する処理の終了時に発生
認証の設定
• 認証
 – 2.0 のデフォルト値(明示的な設定なし)
   • <authentication mode="Windows">
   • <forms name=".ASPXAUTH" loginUrl="login.aspx"
      defaultUrl="default.aspx" protection="All" timeout="30" path="/"
      requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile"
      domain="" enableCrossAppRedirects="false">
   •    <credentials passwordFormat="SHA1" />
   • </forms>
   • <passport redirectUrl="internal" />
   • </authentication>
 – メンバーシップのための設定
   • <authentication mode="Forms" />
承認の設定
• 承認
 – 設定例(未認証ユーザを拒否)
   • <authorization>
   • <deny users=“?” />
   • </authorization>
 – 許可( allow )/拒否( deny )
 – すべてのユーザ” *” /未認証ユーザ” ?”
 – ロール/ユーザ名の個別指定
 – 適用順序は記述順
   • <deny roles=“manager”>
   • <allow roles=“Admins”>
   • Admins と manager 2つのロールを持つ人は拒否
 – フォルダ/ファイル単位で設定可能
   • フォルダ毎の web.config
   • Location 要素の利用
メンバーシップのデフォルト設定
•   "C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIGmachine.config"
    – <membership>
    –   <providers>
    –    <add name=“AspNetSqlMembershipProvider”
      type="System.Web.Security.SqlMembershipProvider, System.Web,
      Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
      connectionStringName="LocalSqlServer" enablePasswordRetrieval="false"
      enablePasswordReset="true" requiresQuestionAndAnswer="true"
      applicationName="/" requiresUniqueEmail="false"
      passwordFormat="Hashed" maxInvalidPasswordAttempts="5"
      minRequiredPasswordLength="7"       minRequiredNonalphanumericCharacters="1"
           passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
    –     </providers>
    – </membership>
•   SqlMembershipProvider クラスを利用、各種プロパティを設定
メンバーシッププロバイダ
• ユーザの認証情報を保存/取得する
• プロバイダを置き換えることで様々なデータストアに対応
 – SqlMembershipProvider
   • SQL Server を利用
 – ActiveDirectoryMembershipProvider
   • Active Directory を利用
 – AccessProvider
   • Access を利用
   • サンプルとして提供されている
   • http://msdn2.microsoft.com/en-us/asp.net/aa336558.aspx
• ほかのプロバイダも含めてソースコードが公開されている
 – http://weblogs.asp.net/scottgu/archive/2006/04/13/442772.aspx
 – これを参考に Oracle 等に対するプロバイダの実装も可能
メンバーシップ用 DB 設定
• "C:WindowsMicrosoft.NETFrameworkv2.0.50727C
 ONFIGmachine.config“
  – <connectionStrings>
  – <add name="LocalSqlServer" connectionString="data
   source=.SQLEXPRESS;Integrated
   Security=SSPI;AttachDBFilename=|DataDirectory|
   aspnetdb.mdf;User Instance=true"
   providerName="System.Data.SqlClient" />
  – </connectionStrings>
メンバーシップ用データベース
• ASPNETDB.MDF
 – “C:WindowsMicrosoft.NETFrameworkv2.0.50727ASP.NETWebA
   dminFilesApp_DataASPNETDB.MDF” からコピー
 – aspnet_regsql.exe により既存のデータベース上に必要なテーブ
   ル、ストアドプロシージャー等を追加できる
 – テーブル等を生成する SQL スクリプトも生成できる
   • aspnet_regsql.exe -sqlexportonly ファイル名 -A all
   • SQL サーバが利用できるレンタルサーバ上で利用可能
 – 接続先データベースの変更
   • <connectionStrings>
             <remove name="LocalSqlServer"/>
             <add name="LocalSqlServer” connectionString="server= サーバ名 ;uid=
     ユーザ ID;pwd= パスワード ;Trusted_Connection=no;database= データベ
     ース名 "
               providerName="System.Data.SqlClient"/>
       </connectionStrings>
メンバーシップのカスタマイズ
 見た目のカスタマイズ
  オートフォーマットの適用
  各種プロパティによる変更
  テンプレート化して変更


 表示項目のカスタマイズ
  コントロールのプロパティと web.config の双方の調整が必
   要
  例: CreateUserWizard コントロールからメールと質問項目
   を削除
   コントロールの RequireEmail プロパティを False に変更
   SqlMemberShipProvider の以下の設定を確認
      RequiresUniqueEmail  -  False (デフォルト)
      requiresQuestionAndAnswer  -  False
メンバーシップ利用時の注意点
 applicationName 要素の指定
  デフォルト -  applicationName="/“
  これを指定することで1つの DB で複数の Web アプ
   リケーションのメンバーシップを管理することも可
   能
  複数の Web アプリケーションで同一のユーザ情報
   を管理することも可能
ロールの基礎
 ロールとは
  ユーザをグループ単位で認証/承認する仕組み
 認証
  ユーザを確認する
  ASP.NET による Windows 認証時、及び Form 認証時
  にロールが有効
 承認
  ページへのアクセス権を確認する
    ロールに対して許可/拒否
ロールのデフォルト設定
 "C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIGmachine.config“
    <roleManager>
    <providers>
      <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer"
     applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web,
     Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
       <add name="AspNetWindowsTokenRoleProvider" applicationName="/"
     type="System.Web.Security.WindowsTokenRoleProvider, System.Web,
     Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </providers>
    </roleManager>
 SqlRoleProvider
    データベース上にロールを作成/取得
 WindowsTokenRoleProvider
    ActiveDirectory からロールを取得
ロールを有効にする
 利用するための設定
  Web.config の system.web 要素に以下を追加
    <roleManager enabled="true" />


 Windows 認証時の個別 Web アプリケーションのた
 めのロールの拡張
  ADAM ( Active Directory Application Mode )を利用
  SqlRoleProvider を利用
ロールを作成/設定する
 ロールの作成
  Web サイト管理ツールから作成
  プログラム上から作成
    Global.asax を利用する例
      void Application_Start(object sender, EventArgs e)
        {
          if (!Roles.RoleExists("Administrator"))
              Roles.CreateRole("Administrator");
        }
 ロールとユーザを関連づける
  Web サイト管理ツールから設定
  プログラム上から設定
    Roles.AddUsersToRole(new string[]{"shu"}, "Administrator");
ロールを利用する
   フォルダ単位でロールによりアクセスを制限する
       Admin フォルダ web.config
         <authorization>
              <allow roles="Admin"/>
              <deny users ="*"/>
         </authorization>
   ロールのアクセス権と TreeNode を連携する(セキュリティトリミング)
       ルート web.config
           <siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
              <providers>
               <add name="XmlSiteMapProvider" type ="System.Web.XmlSiteMapProvider" securityTrimmingEnabled="true" siteMapFile="Web.sitemap"/>
              </providers>
            </siteMap>
       SiteMap ファイル
           <?xml version="1.0" encoding="utf-8" ?>
           <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
            <siteMapNode url="Default.aspx" title="root">
             <siteMapNode url=“AdminDefault.aspx” title=“Adminroot” description=“” roles=“Admin”   />
             <siteMapNode url=“UserDefault.aspx” title=“Userroot” description=“” roles=“User” />
            </siteMapNode>
           </siteMap>
     SiteMapNode のすべてに url が設定されている必要がある
プロファイルの基礎
 プロファイルとは
  サイトに接続した利用者に関する任意の情報を保存/参照で
   きる仕組み
  ログインしていないユーザもプロファイルを利用できる

 デフォルト設定
  "C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIGmachi
  ne.config“
    <profile>
       <providers>
        <add name="AspNetSqlProfileProvider"
     connectionStringName="LocalSqlServer" applicationName="/"
     type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0,
     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
       </providers>
      </profile>
プロファイルを利用する
 web.config で設定
   <profile>
     <properties>
      <add name="BloodType" serializeAs="String"/>
     </properties>
   </profile>
 プログラムで取得/設定
   protected void Page_Load(object sender, EventArgs e)
   {
      if(!IsPostBack)
        this.TextBox1.Text = Profile.BloodType;
   }
   protected void Button1_Click(object sender, EventArgs e)
   {
      Profile.BloodType = this.TextBox1.Text;
   }
匿名ユーザプロファイルを利用する
 web.config で設定
   <anonymousIdentification enabled="true"/>
   <profile>
      <properties>
       <add name=“BloodType” serializeAs=“String” allowAnonymous="true" />
      </properties>
   </profile>
 プログラムの設定/取得方法は同一
 匿名ユーザから認証ユーザへの情報の受け渡し
   Global.asax を利用する方法
     public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)
     {
          ProfileCommon anonymousProfile = Profile.GetProfile(args.AnonymousID);
          Profile.BloodType = anonymousProfile.BloodType;
     }
プロファイルをどう活用するか
 永続化が必要なデータ
 Session オブジェクトではなくプロファイルを利用
 できないか検討してみる
  サーバ上のメモリを圧迫しない
  強く型付けされたプログラムを記述できる
メンバーシップの将来
 AJAX でのサポート
  メンバーシップベースの認証機能をサポート
  AuthenicationServise クラス
  ProfileService クラス
 IIS 7でのサポート
  IIS7 のベースは ASP.NET に
  メンバーシップも統合
  Web サイト管理ツールと同様の処理が IIS7 の管理ツ
   ールとして利用可能に
  Vista で確認
まとめ
 基礎となるクラスの設定方法を理解する
  設定で動作をカスタマイズできる
 必要であればカスタム Provider クラスを実装して
 置き換え可能
  コントロール類はそのまま利用可能


 メンバーシップはこれからの ASP.NET アプリの基
 礎
  活用していくための知識を身につけておこう

20061125

  • 1.
    使える! メンバーシップ・ロール・プロファイル どっとねっとふぁん http://dotnetfan.org 小野 修司
  • 2.
    メンバーシップコントロール入門  Login  - アカウントとパスワードによる認証 CreateUserWizard  - ユーザの登録  ChangePassword  - パスワード変更  PasswordRecovery  - パスワードの再送  LoginStatus  - ログイン状態表示  LoginName  - ログイン名表示  LoginView  - ログイン状態に応じた表示  Web サイト管理ツール  ユーザ、ロールの作成/アクセス規則の設定
  • 3.
    ノンコーディングでデモシステム  Default.aspx  LoginStatus  LoginName  ChangePassword  Login.aspx  Login  CreateUserWizard  Web サイト管理ツール  認証の種類 - インターネットから  アクセス規則の作成 - 匿名ユーザを拒否  ASPNETDB.MDF  ユーザ情報を格納するデータベース(自動作成)
  • 4.
    メンバーシップの基礎  メンバーシップとは ユーザを個別に認証/承認する仕組み  認証  ユーザを確認する  ASP.NET による Form 認証時にメンバーシップが有効  (参考)  ASP.NET における認証の種類  Windows 認証、 Form 認証、 Passport 認証  IIS における認証の種類  匿名アクセス、基本認証、統合 Windows 認証  承認  ページへのアクセス権を確認する  ユーザに対して許可/拒否
  • 5.
    認証/承認のタイミング  アプリケーションイベント( HttpApplication クラス)  すべてのリクエストに対して順を追って発生( Http パイプライン)  BeginRequest リクエストに対する処理の開始時に発生  AuthenticateRequest 認証の開始時に発生  PostAuthenticateRequest 認証の終了時に発生  AuthorizeRequest 承認の開始時に発生  PostAuthorizeRequest 承認の終了時に発生  ResolveRequestCache キャッシュの処理の開始時に発生  PostResolveRequestCache キャッシュの処理の終了時に発生  PostMapRequestHandler ハンドラの生成後に発生  AcquireRequestState セッション等の状態の取得時に発生  PostAcquireRequestState セッション等の状態の取得後に発生  PreRequestHandlerExecute ハンドラの実行前に発生          ( Page クラスの処理)  PostRequestHandlerExecute ハンドラの実行後に発生  ReleaseRequestState セッション等の状態の開放時に発生  PostReleaseRequestState セッション等の状態の開放後に発生  UpdateRequestCache キャッシュの状態更新時に発生  PostUpdateRequestCache キャッシュの状態更新後に発生  EndRequest リクエストに対する処理の終了時に発生
  • 6.
    認証の設定 • 認証 –2.0 のデフォルト値(明示的な設定なし) • <authentication mode="Windows"> • <forms name=".ASPXAUTH" loginUrl="login.aspx" defaultUrl="default.aspx" protection="All" timeout="30" path="/" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" domain="" enableCrossAppRedirects="false"> • <credentials passwordFormat="SHA1" /> • </forms> • <passport redirectUrl="internal" /> • </authentication> – メンバーシップのための設定 • <authentication mode="Forms" />
  • 7.
    承認の設定 • 承認 –設定例(未認証ユーザを拒否) • <authorization> • <deny users=“?” /> • </authorization> – 許可( allow )/拒否( deny ) – すべてのユーザ” *” /未認証ユーザ” ?” – ロール/ユーザ名の個別指定 – 適用順序は記述順 • <deny roles=“manager”> • <allow roles=“Admins”> • Admins と manager 2つのロールを持つ人は拒否 – フォルダ/ファイル単位で設定可能 • フォルダ毎の web.config • Location 要素の利用
  • 8.
    メンバーシップのデフォルト設定 • "C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIGmachine.config" – <membership> – <providers> – <add name=“AspNetSqlMembershipProvider” type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" /> – </providers> – </membership> • SqlMembershipProvider クラスを利用、各種プロパティを設定
  • 9.
    メンバーシッププロバイダ • ユーザの認証情報を保存/取得する • プロバイダを置き換えることで様々なデータストアに対応 – SqlMembershipProvider • SQL Server を利用 – ActiveDirectoryMembershipProvider • Active Directory を利用 – AccessProvider • Access を利用 • サンプルとして提供されている • http://msdn2.microsoft.com/en-us/asp.net/aa336558.aspx • ほかのプロバイダも含めてソースコードが公開されている – http://weblogs.asp.net/scottgu/archive/2006/04/13/442772.aspx – これを参考に Oracle 等に対するプロバイダの実装も可能
  • 10.
    メンバーシップ用 DB 設定 •"C:WindowsMicrosoft.NETFrameworkv2.0.50727C ONFIGmachine.config“ – <connectionStrings> – <add name="LocalSqlServer" connectionString="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory| aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> – </connectionStrings>
  • 11.
    メンバーシップ用データベース • ASPNETDB.MDF –“C:WindowsMicrosoft.NETFrameworkv2.0.50727ASP.NETWebA dminFilesApp_DataASPNETDB.MDF” からコピー – aspnet_regsql.exe により既存のデータベース上に必要なテーブ ル、ストアドプロシージャー等を追加できる – テーブル等を生成する SQL スクリプトも生成できる • aspnet_regsql.exe -sqlexportonly ファイル名 -A all • SQL サーバが利用できるレンタルサーバ上で利用可能 – 接続先データベースの変更 • <connectionStrings>         <remove name="LocalSqlServer"/>         <add name="LocalSqlServer” connectionString="server= サーバ名 ;uid= ユーザ ID;pwd= パスワード ;Trusted_Connection=no;database= データベ ース名 "           providerName="System.Data.SqlClient"/>   </connectionStrings>
  • 12.
    メンバーシップのカスタマイズ  見た目のカスタマイズ オートフォーマットの適用  各種プロパティによる変更  テンプレート化して変更  表示項目のカスタマイズ  コントロールのプロパティと web.config の双方の調整が必 要  例: CreateUserWizard コントロールからメールと質問項目 を削除  コントロールの RequireEmail プロパティを False に変更  SqlMemberShipProvider の以下の設定を確認  RequiresUniqueEmail  -  False (デフォルト)  requiresQuestionAndAnswer  -  False
  • 13.
    メンバーシップ利用時の注意点  applicationName 要素の指定  デフォルト -  applicationName="/“  これを指定することで1つの DB で複数の Web アプ リケーションのメンバーシップを管理することも可 能  複数の Web アプリケーションで同一のユーザ情報 を管理することも可能
  • 14.
    ロールの基礎  ロールとは ユーザをグループ単位で認証/承認する仕組み  認証  ユーザを確認する  ASP.NET による Windows 認証時、及び Form 認証時 にロールが有効  承認  ページへのアクセス権を確認する  ロールに対して許可/拒否
  • 15.
    ロールのデフォルト設定  "C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIGmachine.config“  <roleManager>  <providers>  <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />  <add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />  </providers>  </roleManager>  SqlRoleProvider  データベース上にロールを作成/取得  WindowsTokenRoleProvider  ActiveDirectory からロールを取得
  • 16.
    ロールを有効にする  利用するための設定 Web.config の system.web 要素に以下を追加  <roleManager enabled="true" />  Windows 認証時の個別 Web アプリケーションのた めのロールの拡張  ADAM ( Active Directory Application Mode )を利用  SqlRoleProvider を利用
  • 17.
    ロールを作成/設定する  ロールの作成 Web サイト管理ツールから作成  プログラム上から作成  Global.asax を利用する例  void Application_Start(object sender, EventArgs e)  {  if (!Roles.RoleExists("Administrator"))  Roles.CreateRole("Administrator");  }  ロールとユーザを関連づける  Web サイト管理ツールから設定  プログラム上から設定  Roles.AddUsersToRole(new string[]{"shu"}, "Administrator");
  • 18.
    ロールを利用する  フォルダ単位でロールによりアクセスを制限する  Admin フォルダ web.config  <authorization>  <allow roles="Admin"/>  <deny users ="*"/>  </authorization>  ロールのアクセス権と TreeNode を連携する(セキュリティトリミング)  ルート web.config  <siteMap defaultProvider="XmlSiteMapProvider" enabled="true">  <providers>  <add name="XmlSiteMapProvider" type ="System.Web.XmlSiteMapProvider" securityTrimmingEnabled="true" siteMapFile="Web.sitemap"/>  </providers>  </siteMap>  SiteMap ファイル  <?xml version="1.0" encoding="utf-8" ?>  <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >  <siteMapNode url="Default.aspx" title="root">  <siteMapNode url=“AdminDefault.aspx” title=“Adminroot” description=“” roles=“Admin”   />  <siteMapNode url=“UserDefault.aspx” title=“Userroot” description=“” roles=“User” />  </siteMapNode>  </siteMap>  SiteMapNode のすべてに url が設定されている必要がある
  • 19.
    プロファイルの基礎  プロファイルとは サイトに接続した利用者に関する任意の情報を保存/参照で きる仕組み  ログインしていないユーザもプロファイルを利用できる  デフォルト設定  "C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIGmachi ne.config“  <profile>  <providers>  <add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />  </providers>  </profile>
  • 20.
    プロファイルを利用する  web.config で設定  <profile>  <properties>  <add name="BloodType" serializeAs="String"/>  </properties>  </profile>  プログラムで取得/設定  protected void Page_Load(object sender, EventArgs e)  {  if(!IsPostBack)  this.TextBox1.Text = Profile.BloodType;  }  protected void Button1_Click(object sender, EventArgs e)  {  Profile.BloodType = this.TextBox1.Text;  }
  • 21.
    匿名ユーザプロファイルを利用する  web.config で設定  <anonymousIdentification enabled="true"/>  <profile>  <properties>  <add name=“BloodType” serializeAs=“String” allowAnonymous="true" />  </properties>  </profile>  プログラムの設定/取得方法は同一  匿名ユーザから認証ユーザへの情報の受け渡し  Global.asax を利用する方法  public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)  {  ProfileCommon anonymousProfile = Profile.GetProfile(args.AnonymousID);  Profile.BloodType = anonymousProfile.BloodType;  }
  • 22.
    プロファイルをどう活用するか  永続化が必要なデータ  Sessionオブジェクトではなくプロファイルを利用 できないか検討してみる  サーバ上のメモリを圧迫しない  強く型付けされたプログラムを記述できる
  • 23.
    メンバーシップの将来  AJAX でのサポート  メンバーシップベースの認証機能をサポート  AuthenicationServise クラス  ProfileService クラス  IIS 7でのサポート  IIS7 のベースは ASP.NET に  メンバーシップも統合  Web サイト管理ツールと同様の処理が IIS7 の管理ツ ールとして利用可能に  Vista で確認
  • 24.
    まとめ  基礎となるクラスの設定方法を理解する 設定で動作をカスタマイズできる  必要であればカスタム Provider クラスを実装して 置き換え可能  コントロール類はそのまま利用可能  メンバーシップはこれからの ASP.NET アプリの基 礎  活用していくための知識を身につけておこう