Share via


ASP.NET プロファイル プロパティのユーザー ID

更新 : 2007 年 11 月

ASP.NET のユーザー プロファイル機能は、現在のユーザーに対して一意の情報を提供するように設計されています。プロファイルは、認証されたユーザーまたは認証されていない匿名ユーザーに対して使用できます。

認証されたユーザー

既定では、ユーザー プロファイルは現在の HTTP コンテキストの User プロパティに格納されているユーザー ID に関連付けられ、HttpContext.Current プロパティを使用してアクセスできます。ユーザー ID は、次の方法によって決まります。

  • 認証後にユーザー ID を設定する ASP.NET フォーム認証システム。

  • 認証後にユーザー ID を設定する Windows 認証または Passport 認証。

  • ユーザーの資格情報を独自に取得して管理し、ユーザー ID を手動で設定するカスタム認証。

ASP.NET フォーム認証では、ログイン フォームを作成してユーザーに資格情報の入力を求めます。ASP.NET ログイン コントロールを使用すると、コードを記述せずにログイン フォームを作成してフォーム認証を実行できます。ASP.NET の機能を使用してユーザーを認証する方法の詳細については、「ASP.NET ログイン コントロールの概要」と「メンバシップを使用したユーザーの管理」を参照してください。フォーム認証については、「方法 : 簡単なフォーム認証を実装する」を参照してください。

匿名ユーザー

プロファイルは、匿名ユーザーにも使用できます。既定では、匿名プロファイルのサポートは無効になっているため、明示的に有効にする必要があります。さらに、Web.config ファイルでプロファイル プロパティを定義する場合は、明示的に個々に匿名ユーザーを使用できるように設定する必要があります。プロファイルは認証されたユーザー用に使用される可能性があり、多くのプロパティは匿名ユーザーが使用できない個人情報に関連しているため、プロファイル プロパティは既定で匿名のアクセスをサポートしていません。

匿名 ID を有効にすると、ASP.NET は初めてサイトを訪問したユーザーに一意の ID を作成します。一意のユーザー ID は、ユーザーがページを要求するたびに識別できるように、ユーザーのコンピュータの Cookie に格納されます。Cookie の既定の有効期限は約 70 日間に設定され、ユーザーがサイトを訪問する際に定期的に更新されます。ユーザーのコンピュータが Cookie を受け入れない場合は、ユーザーの ID をページ要求の URL の一部に含めることができますが、ID はユーザーがブラウザを終了すると失われます。

匿名 ID を有効にする方法については、「anonymousIdentification 要素 (ASP.NET 設定スキーマ)」を参照してください。

匿名プロファイルの情報の移行

アプリケーションが初期状態で匿名ユーザーのパーソナル化情報を保持し、そのユーザーがその後にアプリケーションにログインすることがあります。そのような場合、ユーザーの ID は割り当てられていた匿名ユーザー ID から認証プロセスが提供する ID に変更されます。

ユーザーがログインして匿名ユーザーではなくなると、MigrateAnonymous イベントが発生します。このイベントを処理して、必要に応じてユーザーの匿名 ID から認証された新しい ID に情報を移行できます。ユーザーが認証されたときに情報を移行するコード例を次に示します。

Public Sub Profile_OnMigrateAnonymous(sender As Object, args As ProfileMigrateEventArgs)
  Dim anonymousProfile As ProfileCommon = Profile.GetProfile(args.AnonymousID)

  Profile.ZipCode = anonymousProfile.ZipCode
  Profile.CityAndState = anonymousProfile.CityAndState
  Profile.StockSymbols = anonymousProfile.StockSymbols

  ''''''''
  ' Delete the anonymous profile. If the anonymous ID is not 
  ' needed in the rest of the site, remove the anonymous cookie.

  ProfileManager.DeleteProfile(args.AnonymousID)
  AnonymousIdentificationModule.ClearAnonymousIdentifier()

  ' Delete the user row that was created for the anonymous user.
  Membership.DeleteUser(args.AnonymousID, True)
End Sub
public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)
{
  ProfileCommon anonymousProfile = Profile.GetProfile(args.AnonymousID);

  Profile.ZipCode = anonymousProfile.ZipCode;
  Profile.CityAndState = anonymousProfile.CityAndState;
  Profile.StockSymbols = anonymousProfile.StockSymbols;

  ////////
  // Delete the anonymous profile. If the anonymous ID is not 
  // needed in the rest of the site, remove the anonymous cookie.

  ProfileManager.DeleteProfile(args.AnonymousID);
  AnonymousIdentificationModule.ClearAnonymousIdentifier(); 

  // Delete the user row that was created for the anonymous user.
  Membership.DeleteUser(args.AnonymousID, true);

}

参照

概念

ASP.NET プロファイル プロパティの概要

ASP.NET プロファイル プロパティの概要

ASP.NET プロファイル プロパティの定義

ASP.NET プロファイル プロバイダ