ASP.NET 프로필 속성에 대한 사용자 식별

Visual Studio 2010

업데이트: 2007년 11월

ASP.NET 사용자 프로필 기능은 현재 사용자의 고유한 정보를 제공하도록 되어 있습니다. 인증된 사용자 또는 인증되지 않은 익명 사용자에 대해 프로필을 사용할 수 있습니다.

기본적으로 사용자 프로필은 HttpContext.Current 속성을 통해 액세스할 수 있는 현재 HTTP 컨텍스트의 User 속성에 저장된 사용자 ID와 연결됩니다. 사용자 ID는 다음과 같은 인증 형식을 통해 결정됩니다.

  • ASP.NET 폼 인증 시스템 - 인증이 완료된 후 사용자 ID를 설정합니다.

  • Windows 또는 Passport 인증 - 인증이 완료된 후 사용자 ID를 설정합니다.

  • 사용자 지정 인증 - 사용자 자격 증명 가져오기 및 사용자 ID 수동 설정을 관리합니다.

ASP.NET 폼 인증을 수행할 경우에는 로그인 폼을 만들고 사용자가 자격 증명을 입력해야 합니다. ASP.NET Login 컨트롤을 사용하여 로그인 폼을 만들고 별도의 코드를 작성하지 않고 폼 인증을 수행할 수 있습니다. ASP.NET 기능을 통해 사용자를 인증하는 데 대한 내용은 ASP.NET Login 컨트롤 개요멤버 자격을 사용하여 사용자 관리를 참조하십시오. 폼 인증에 대한 내용은 방법: 간단한 폼 인증 구현을 참조하십시오.

익명 사용자에 대해서도 프로필을 사용할 수 있습니다. 익명 프로필 지원은 기본적으로 사용되지 않으므로 명시적으로 설정해야 합니다. 또한 Web.config 파일에서 프로필 속성을 정의하는 경우 각 익명 사용자에 대해 이러한 속성을 사용할 수 있도록 명시적으로 설정해야 합니다. 프로필은 인증된 사용자에 대해 사용하도록 되어 있고 대부분의 속성은 익명 사용자에게 해당되지 않는 개인 정보와 관련되어 있으므로 기본적으로 프로필 속성은 익명 액세스를 지원하지 않습니다.

익명 ID를 사용할 수 있는 경우 ASP.NET에서는 사용자가 사이트를 처음으로 방문할 때 해당 사용자에 대한 고유 ID를 만듭니다. 각 페이지 요청으로 사용자를 식별할 수 있도록 고유 사용자 ID가 사용자 컴퓨터의 쿠키에 저장됩니다. 쿠키의 기본 만료 기간은 약 70일로 설정되고 사용자가 사이트를 방문할 때 주기적으로 갱신됩니다. 사용자 컴퓨터에서 쿠키를 허용하지 않는 경우에는 사용자가 브라우저를 종료하면 ID가 손실되더라도 사용자 ID를 페이지 요청에 대한 URL의 일부로 유지 관리할 수 있습니다.

익명 ID를 사용하도록 설정하는 데 대한 자세한 내용은 anonymousIdentification 요소(ASP.NET 설정 스키마)를 참조하십시오.

경우에 따라 응용 프로그램에서 처음에는 익명 사용자에 대한 개인 설정 정보를 유지 관리하지만 나중에 이 사용자가 응용 프로그램에 로그인할 수도 있습니다. 이런 경우 사용자 ID는 할당된 익명 사용자 ID에서 인증 프로세스를 통해 제공된 ID로 변경됩니다.

사용자가 로그인하는 경우, 즉 익명 사용자가 아닌 경우에는 MigrateAnonymous 이벤트가 발생합니다. 필요한 경우 이 이벤트를 처리하여 사용자의 익명 ID에서 가져온 정보를 인증된 새 ID로 마이그레이션할 수 있습니다. 다음 코드 예제에서는 사용자가 인증될 때 정보를 마이그레이션하는 방법을 보여 줍니다.

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);

}


표시: