연습: 프로필 속성을 사용하여 웹 사이트 사용자 정보 유지 관리

업데이트: 2007년 11월

ASP.NET Profile 속성을 사용하면 응용 프로그램에서는 사용자 특정 정보를 추적하고 영구히 저장할 수 있습니다. 예를 들어, 사용자는 우편 번호나 즐겨찾는 색 구성표를 지정할 수 있으며 응용 프로그램은 응용 프로그램 내의 임의 위치에 이러한 정보를 저장하고 가져올 수 있습니다. ASP.NET은 익명 사용자이든 로그온한 사용자이든 관계없이 현재 사용자가 해당 사용자 계정에 대해 저장된 개인 정보와 일치하는지 자동으로 확인합니다.

이 연습에서는 응용 프로그램에 Profile 속성을 추가하고 Profile 속성을 사용하여 웹 사이트 방문객을 위한 개별 설정을 만드는 방법을 보여 줍니다.

이 연습을 통해 다음과 같은 작업 방법을 배웁니다.

  • Profile 속성을 사용하도록 응용 프로그램을 구성합니다.

  • 사용자에 대해 유지 관리할 단순 및 복합 Profile 속성을 정의합니다.

  • 응용 프로그램에서 Profile 값을 설정 및 검색합니다.

  • 익명 사용자와 로그온한 사용자를 모두 포함하는 Profile 속성을 사용합니다.

사전 요구 사항

이 연습을 완료하려면 다음과 같은 요건을 갖추어야 합니다.

  • Microsoft Visual Web Developer

  • Microsoft .NET Framework

  • Microsoft SQL Server Standard Edition

    연습 과정에서 만드는 Profile 속성 정보는 SQL Server Standard Edition 데이터베이스에 저장됩니다.

  • 브라우저에서 쿠키 설정

    참고:

    응용 프로그램이 쿠키 없이 작동되도록 구성된 경우 ASP.NET Profile 속성은 쿠키 없이 작동할 수 있습니다. 그러나 이 연습에서는 Profile 속성에 대한 기본 구성 설정을 사용하며 이 경우 쿠키가 사용됩니다.

웹 사이트 만들기 및 구성

연습: Visual Web Developer에서 기본 웹 페이지 만들기를 완료하여 Microsoft Visual Studio에서 웹 사이트를 이미 만들었으면 해당 웹 사이트를 사용하여 다음 단원으로 이동합니다. 그렇지 않으면, 다음 단계를 따라 새 웹 사이트를 만듭니다.

파일 시스템 웹 사이트를 만들려면

  1. Visual Studio를 엽니다.

  2. 파일 메뉴에서 새로 만들기를 가리킨 후 웹 사이트를 클릭하거나 파일 메뉴에서 새 웹 사이트를 클릭합니다.

    새 웹 사이트 대화 상자가 나타납니다.

  3. Visual Studio에 설치되어 있는 템플릿에서 ASP.NET 웹 사이트를 클릭합니다.

  4. 맨 왼쪽에 있는 위치 목록에서 파일 시스템을 클릭합니다.

  5. 맨 오른쪽에 있는 위치 목록에 웹 사이트의 페이지를 보관할 폴더의 이름을 입력합니다.

    예를 들어, 폴더 이름 C:\WebSites를 입력합니다.

  6. 언어 목록에서 작업할 프로그래밍 언어를 클릭합니다.

  7. 확인을 클릭합니다.

    Visual Web Developer에서 해당 폴더와 Default.aspx라는 새 페이지를 만듭니다.

프로필 속성 구성

ASP.NET Profile 속성으로 작업하기 전에 각 사용자에 대해 추적하려는 Profile 속성을 사용 가능하게 설정하고 정의하도록 응용 프로그램을 구성합니다. 먼저 웹 사이트가 사용자에 대해 추적할 단일 PostalCode 속성을 만듭니다. 또한 사이트에서 익명 사용자와 로그온한 사용자 모두에 대해 PostalCode 속성을 추적할 수 있도록 이 속성을 구성합니다.

먼저 익명 사용자로 작업합니다. 기타 작업으로 ASP.NET은 컴퓨터의 쿠키에 저장되는 고유한 익명 ID를 사용자에게 할당합니다. ASP.NET은 이 익명 ID를 사용하여 사용자에게 고유한 값을 설정하고 가져올 수 있습니다.

웹 사이트에서 프로필 속성을 구성하려면

  1. 솔루션 탐색기에서 웹 사이트에 Web.config 파일이 이미 있는지 확인합니다.

    웹 사이트에 Web.config 파일이 없으면 다음 단계를 수행하십시오.

    1. 웹 사이트의 이름을 마우스 오른쪽 단추로 클릭합니다.

    2. 새 항목 추가를 클릭합니다.

    3. Visual Studio에 설치되어 있는 템플릿에서 웹 구성 파일을 클릭합니다.

    4. 추가를 클릭합니다.

      이름이 Web.config인 새 파일이 사이트에 추가된 후 편집기에서 열립니다.

  2. 다음 <profile> 요소를 <system.web> 요소의 자식으로 Web.config 파일에 추가합니다.

    <system.web>
    
      <anonymousIdentification enabled="true" />  <profile>    <properties>      <add name="PostalCode"         type="System.String"         allowAnonymous="true" />    </properties>  </profile>
    
    <!-- other Web.config settings here -->
    </system.web>
    
    참고:

    Web.config 파일의 요소는 대/소문자를 구분합니다. 따라서 요소를 복사하거나 표시된 그대로 입력합니다.

    다음 요소가 추가되었습니다.

    • Profile 속성이 로그온한(인증된) 사용자에게만 적용되는지 아니면 로그온한 사용자와 익명 사용자 모두에게 적용되는지 지정하는 <anonymousIdentification> 요소

      여기에서는 enabled를 true로 설정했습니다. 따라서 로그온한 사용자와 익명 사용자 모두에 대해 Profile 속성 정보가 추적됩니다.

    • 정의 중인 모든 Profile 속성을 포함하는 <properties> 요소

    • 새 <profile> 요소를 정의하는 <add> 요소

      여기에서는 이름이 PostalCode인 단일 Profile 속성을 정의했습니다.

      Profile 속성을 정의할 때 .NET Framework 형식 클래스 이름을 사용하여 해당 데이터 형식을 지정합니다. 또한 익명 사용자에 대해 Profile 속성이 추적되는지 여부도 지정합니다. 익명 ID를 사용 가능하게 설정한 후에 익명 사용자마다 개별적으로 Profile 속성을 추적할지 여부를 추가적으로 지정할 수 있습니다.

      정의하려는 추가 Profile 속성 각각에 대해 새 add 요소를 만듭니다.

      참고:

      기본적으로 사용자 프로필 정보는 웹 사이트의 Application_Data 하위 디렉터리에 있는 SQL Server Standard Edition 데이터베이스에 저장됩니다. 이 연습에서는 기본 구성을 사용합니다. 많은 수의 사용자를 지원하는 프로덕션 응용 프로그램에서는 Microsoft SQL Server 데이터베이스에 Profile 속성 데이터를 저장하는 것이 더 좋습니다. 자세한 내용은 이 연습 뒷부분에서 "다음 단계"를 참조하십시오.

PostalCode 속성 설정 및 가져오기

Profile 속성을 추적하도록 웹 사이트를 구성한 경우 일반적인 구성 요소 속성의 경우처럼 Profile 속성을 설정하고 가져올 수 있습니다. 이 단원에서는 이전 단원에서 정의한 PostalCode 값을 설정 및 가져오는 방법을 보여 주는 페이지를 만듭니다.

PostalCode 속성을 설정 및 가져오는 페이지를 만들려면

  1. Profiles.aspx라는 사이트에 새 웹 페이지를 추가합니다.

  2. Profiles.aspx를 열고 디자인 뷰로 전환합니다.

  3. 도구 상자의 표준 그룹에서 다음 표에 나열된 컨트롤을 페이지로 끌어온 다음 지정된 대로 해당 속성을 설정합니다.

    컨트롤

    속성 설정

    TextBox

    ID = textPostalCode

    Button

    ID = SetPostalCode

    Text = 우편 번호 설정

    Label

    ID = labelPostalCode

    Text = (비어 있음)

  4. 소스 뷰로 전환한 후 다음 특성이 없는 경우 SetPostalCode 단추에 추가합니다.

    OnClick="SetPostalCode_Click"
    
  5. 우편 번호 설정에 대한 Click 처리기를 만든 후 다음의 강조 표시된 코드를 추가합니다.

    Sub SetPostalCode_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs)
        Profile.PostalCode = Server.HtmlEncode(textPostalCode.Text)    labelPostalCode.Text = Profile.PostalCode
    End Sub
    
    void SetPostalCode_Click(object sender, System.EventArgs e)
    {
        Profile.PostalCode = Server.HtmlEncode(textPostalCode.Text);    labelPostalCode.Text = Profile.PostalCode;
    }
    

    사용자 프로필이 사용 가능하게 설정되면 ASP.NET은 현재 컨텍스트에 해당 사용자 프로필을 추가하는 Profile이라는 속성을 동적으로 만듭니다. 그러면 Profile.PostalCode를 통해 개별 Profile 속성을 사용할 수 있습니다.

  6. Page_Load 처리기를 만든 후 다음의 강조 표시된 코드를 추가합니다.

    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        labelPostalCode.Text = Profile.PostalCode
    End Sub
    
    void Page_Load(object sender, System.EventArgs e)
    {
        labelPostalCode.Text = Profile.PostalCode;
    }
    

    이 코드는 페이지가 요청될 때마다 Profile.PostalCode 값을 표시합니다.

PostalCode 프로필 속성 테스트

이제 이전 단원에서 정의한 PostalCode 속성을 테스트할 수 있습니다.

참고:

멤버 자격이 설정된 기존 웹 사이트로 작업할 경우 로그오프했는지 확인합니다.

PostalCode 속성을 테스트하려면

  1. Ctrl+F5를 눌러 Profiles.aspx 페이지를 실행합니다.

    참고:

    브라우저에 502 오류 또는 페이지를 표시할 수 없음을 나타내는 오류가 나타나면 로컬 요청에 대해 프록시 서버를 무시하도록 브라우저를 구성해야 할 수 있습니다. 자세한 내용은 방법: 로컬 웹 요청에 대해 프록시 서버 건너뛰기를 참조하십시오.

  2. 상자에 우편 번호를 입력한 후 우편 번호 설정을 클릭합니다.

    입력한 우편 번호가 Label 컨트롤에 나타납니다.

  3. 브라우저를 닫아 현재 세션을 닫습니다.

  4. 브라우저를 다시 열고 Profiles.aspx 페이지를 불러옵니다.

    이전에 입력한 우편 번호가 Label 컨트롤에 나타납니다.

이전 절차의 마지막 단계에서는 ASP.NET이 PostalCode 값을 저장하는 경우를 보여 주었습니다. 해당 페이지를 다시 방문하면 ASP.NET은 사용자의 고유한 익명 ID를 기반으로 PostalCode 값을 읽을 수 있습니다.

복합 속성 정의

이 연습 앞부분의 "PostalCode 속성 설정 및 가져오기"에서는 문자열로 저장된 PostalCode라는 단순 속성을 만들었습니다. 이 단원에서는 컬렉션에 해당하는 FavoriteURLs라는 속성을 정의합니다. ASP.NET은 어떠한 형식의 Profile 속성도 저장할 수 있지만 Profile 속성을 정의할 때는 추가 정보를 제공해야 합니다.

FavoriteURLs 속성을 정의하려면

  1. Web.config 파일을 엽니다.

  2. 이 연습 앞부분의 "프로필 속성 구성"에서 만든 profile 요소에 다음의 강조 표시된 속성을 추가합니다.

    <anonymousIdentification enabled="true" />
      <profile>
        <properties>
        <add name="PostalCode" 
          type="System.String" 
          allowAnonymous="true" />
        <add name="FavoriteURLs"       type="System.Collections.Specialized.StringCollection"      allowAnonymous="true" />
        </properties>
      </profile>
    

    FavoriteURLs라는 새 Profile 속성이 추가되었습니다. 문자열이나 정수와 같은 단순한 형식이 아닌 Profile 속성의 경우 정규화된 형식을 지정해야 합니다. 여기에서는 Profile 속성을 문자열이 포함될 컬렉션으로 지정합니다.

  3. Web.config 파일을 저장한 다음 닫습니다.

FavoriteURLs 속성 설정 및 가져오기

컬렉션에 해당하는 FavoriteURLs 속성으로 작업하는 것은 일반적인 컨텍스트에서 컬렉션으로 작업하는 것과 비슷합니다. 이 연습 부분에서는 사용자들이 URL을 입력할 수 있는 TextBox 컨트롤을 추가하여 이 연습 앞부분의 "PostalCode 속성 설정 및 가져오기"에서 만든 Profiles.aspx 페이지를 업데이트합니다. 사용자가 추가를 클릭하면 FavoriteURLs 속성에 해당 URL이 추가됩니다. 또한 즐겨찾는 최신 URL 목록이 드롭다운 목록 상자에 표시됩니다.

FavoriteURLs 속성을 설정 및 가져오려면

  1. Profiles.aspx 페이지에서 다음 컨트롤을 추가하고 다음 표에 나오는 대로 해당 속성을 설정합니다.

    컨트롤

    속성 설정

    TextBox

    ID = textFavoriteURL

    Button

    ID = AddURL

    Text = URL 추가

    ListBox

    ID = listFavoriteURLs

  2. 소스 뷰로 전환한 후 다음 특성이 없는 경우 URL 추가 단추에 추가합니다.

    OnClick="AddURL_Click"
    
  3. URL 추가에 대한 Click 처리기를 만든 후 다음의 강조 표시된 코드를 추가합니다.

    Sub AddURL_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs)
        Dim urlString As String = _        Server.HtmlEncode(textFavoriteURL.Text)
        If Profile.FavoriteURLs Is Nothing Then
            Profile.FavoriteURLs = New _
                System.Collections.Specialized.StringCollection
        End If
        Profile.FavoriteURLs.Add(urlString)    DisplayFavoriteURLs()
    End Sub
    
    void AddURL_Click(object sender, System.EventArgs e)
    {    
        String urlString = Server.HtmlEncode(textFavoriteURL.Text);
        if(Profile.FavoriteURLs == null)
        {
            Profile.FavoriteURLs = new 
                System.Collections.Specialized.StringCollection();
        }
        Profile.FavoriteURLs.Add(urlString);    DisplayFavoriteURLs();
    }
    
  4. Page_Load 처리기에서 다음의 강조 표시된 코드 줄을 추가합니다.

    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        labelPostalCode.Text = Profile.PostalCode
        DisplayFavoriteURLs()
    End Sub
    
    void Page_Load(object sender, System.EventArgs e)
    {
        labelPostalCode.Text = Profile.PostalCode;
        DisplayFavoriteURLs();
    }
    
  5. 다음 서브루틴을 추가하여 ListBox 컨트롤의 URL 표시를 업데이트합니다.

    Sub DisplayFavoriteURLs()
        listFavoriteURLs.DataSource = Profile.FavoriteURLs
        listFavoriteURLs.DataBind()
    End Sub
    
    void DisplayFavoriteURLs()
    {    
        listFavoriteURLs.DataSource = Profile.FavoriteURLs;
        listFavoriteURLs.DataBind();
    }
    

FavoriteURLs 프로필 속성 테스트

이제 FavoriteURLs 속성을 테스트할 수 있습니다.

FavoriteURLs 속성을 테스트하려면

  1. Profiles.aspx 페이지를 실행하고 Ctrl+F5를 누릅니다.

    처음에는 ListBox 컨트롤에 값이 없습니다.

  2. 상자에 URL을 입력한 다음 추가를 클릭합니다.

    ListBox 컨트롤에 해당 URL이 추가됩니다.

  3. 이전 단계를 반복하여 다른 URL을 추가합니다.

  4. 브라우저를 닫습니다.

  5. 브라우저를 다시 열고 Profiles.aspx 페이지를 엽니다.

    브라우저를 닫기 전에 입력한 URL로 ListBox 컨트롤이 채워져 표시됩니다.

로그온 중에 프로필 속성 마이그레이션

사용자가 처음에는 익명 사용자로 사이트를 방문했다가 로그온하는 경우 해당 사용자가 익명으로 설정한 속성 설정을 보존하려고 할 수 있습니다. 일반적인 예로 사용자가 상품을 검색하고 장바구니에 추가하는 작업은 익명으로 처리하지만 결제를 위해 로그온해야 하는 쇼핑 사이트를 들 수 있습니다. 사용자가 로그온할 때 설정 값을 보존하기 위해서는 현재의 익명 사용자 프로필에서 로그온한(인증된) 사용자의 사용자 프로필로 해당 사용자를 마이그레이션합니다.

이 단원에서는 사용자의 PostalCode 설정을 마이그레이션합니다. 이를 위해 사용자 ID를 사용하도록 이미 구성되었으며 로그온 페이지를 포함하는 웹 사이트가 있어야 합니다. 작업 중인 웹 사이트가 아직 멤버 자격을 사용할 수 있게 구성되지 않았으면 다음 절차에 따라 설정하십시오. 사이트에서 이미 멤버 자격을 지원하면 다음 단원으로 이동합니다.

멤버 자격을 사용할 수 있게 웹 사이트를 구성하려면

  1. Visual Studio의 웹 사이트 메뉴에서 ASP.NET 구성을 클릭합니다.

    웹 사이트 관리 도구가 나타납니다.

  2. 보안 탭을 클릭합니다.

  3. 보안을 클릭한 후 사용자에서 인증 형식 선택을 클릭합니다.

  4. 인터넷을 선택한 후 완료를 클릭합니다.

    인터넷 옵션을 선택하면 사용자가 로그온 페이지를 사용하여 응용 프로그램에 로그온하게 되는 폼 인증이 응용 프로그램에 사용됩니다.

  5. 보안 탭의 사용자에서 사용자 만들기를 클릭한 후 사용자 계정을 만듭니다.

    임의 이름과 암호를 사용할 수 있지만 해당 이름과 암호를 기억해 두어야 합니다. 전자 메일 주소의 경우 본인의 주소를 사용하십시오. 이 연습에서는 전자 메일 메시지를 보내지 않습니다.

  6. 사용자 계정을 모두 정의했으면 웹 사이트 관리 도구를 닫습니다.

  7. 도구 상자의 로그인 그룹에서 Login 컨트롤 및 LoginName 컨트롤을 페이지로 끌어 옵니다.

    LoginName 컨트롤은 로그온에는 필요하지 않지만 로그온했음을 확인하는 데 도움이 됩니다.

마이그레이션 처리기 만들기

익명 사용자에 대한 설정을 로그온한 사용자에 대한 설정으로 마이그레이션하려면 사용자 ID가 변경될 때 마이그레이션을 수행해야 합니다. ASP.NET에서는 이를 위해 MigrateAnonymous 이벤트를 제공합니다. MigrateAnonymous 이벤트에 대한 처리기에서 보존하려는 설정을 전송할 수 있습니다.

마이그레이션 처리기를 만들려면

  1. 솔루션 탐색기에서 웹 사이트의 이름을 마우스 오른쪽 단추로 클릭한 다음 새 항목 추가를 클릭합니다.

  2. Visual Studio에 설치되어 있는 템플릿에서 전역 응용 프로그램 클래스를 클릭한 후 추가를 클릭합니다.

    해당 파일 이름은 항상 Global.asax로 지정되므로 입력할 필요가 없습니다.

  3. 다음 코드를 입력하여 MigrateAnonymous 이벤트에 대한 새 처리기를 만듭니다.

    Sub Profile_MigrateAnonymous(ByVal sender As Object, _
        ByVal e As ProfileMigrateEventArgs)
        If Profile.GetProfile(e.AnonymousID).PostalCode <> "" Then
            Profile.PostalCode = _
                Profile.GetProfile(e.AnonymousID).PostalCode
        End If
    End Sub
    
    void Profile_MigrateAnonymous(Object sender, 
            ProfileMigrateEventArgs e)
    {
        if(Profile.GetProfile(e.AnonymousID).PostalCode != String.Empty)
        {
            Profile.PostalCode = 
                Profile.GetProfile(e.AnonymousID).PostalCode;
        }
    }
    

    이 코드는 익명 사용자에 대한 사용자 프로필을 가져온 후 PostalCode 값을 추출합니다. 그런 후 새 사용자 ID에 대한 프로필을 가져온 후 해당 ID에 대한 동일한 값을 설정합니다.

마이그레이션 테스트

마이그레이션을 테스트하기 위해서는 먼저 일부 설정을 익명 사용자로 지정합니다. 그런 후 로그온한 다음 해당 값이 보존되는지 확인합니다.

마이그레이션을 테스트하려면

  1. Profiles.aspx 페이지를 열고 Ctrl+F5를 눌러 실행합니다.

    사용자가 아직 로그온하지 않았으므로 LoginName 컨트롤은 아무 내용도 표시하지 않습니다.

  2. 페이지에 우편 번호가 표시되면 새 우편 번호를 입력한 후 우편 번호 설정을 클릭합니다.

    현재의 익명 ID에 대한 우편 번호가 페이지에 표시됩니다.

  3. 이 연습 앞부분의 "로그온 중에 프로필 속성 마이그레이션"에서 만든 사용자 이름과 암호를 사용하여 로그온합니다.

    LoginName 컨트롤에 사용자 이름이 표시됩니다. 익명 사용자 자격으로 입력한 우편 번호는 해당 설정이 로그온한 사용자 프로필로 마이그레이션되었으므로 계속 표시됩니다.

다음 단계

이 연습에서는 웹 응용 프로그램에서 Profile 속성을 구성하고 사용하기 위한 기본 절차에 대해 설명했습니다. 응용 프로그램에서 다양한 용도로 Profile 속성을 사용할 수 있습니다. 다음 목록에서는 Profile 속성을 사용할 수 있는 추가 영역을 제안합니다.

  • 여러 개의 Profile 속성을 하나의 단위로 사용하는 것이 더 쉬우므로 Profile 속성을 그룹으로 묶습니다.

    예를 들어, Street, City 및 PostalCode라는 여러 개의 Profile 속성을 Address라는 단일 그룹으로 구성할 수 있습니다.

    자세한 내용은 ASP.NET 프로필 속성 정의를 참조하십시오.

  • Profile 속성을 통해 관리할 수 있는 장바구니와 같은 사용자 지정 형식을 만듭니다.

    자세한 내용은 ASP.NET 프로필 속성 정의를 참조하십시오.

  • 다른 프로필 공급자를 선택합니다.

    이 연습에서는 Profile 값을 SQL Server Standard Edition 데이터베이스에 저장했습니다. 많은 수의 사용자를 지원하는 프로덕션 응용 프로그램에서는 SqlProfileProvider 클래스를 사용하는 SQL Server 데이터베이스에 Profile 속성 데이터를 저장하는 것이 더 좋습니다.

    자세한 내용은 웹 사이트 관리 도구 공급자 탭SQL Server용 응용 프로그램 서비스 데이터베이스 만들기를 참조하십시오.

  • 또는 직접 코딩한 형식 및 저장 미디어에 정보를 저장하는 사용자 지정 프로필 공급자를 만들 수 있습니다.

    자세한 내용은 프로필 공급자 구현을 참조하십시오.

참고 항목

개념

ASP.NET 프로필 속성 개요

ASP.NET 프로필 공급자