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

Visual Studio 2010

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

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

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

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

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

  • 익명 사용자와 로그온한 사용자 모두에 대한 프로필 속성을 유지 관리합니다.

  • 응용 프로그램에서 프로필 값을 설정하고 검색합니다.

이 연습을 완료하려면 다음과 같은 요건이 필요합니다.

  • Microsoft Visual Studio

  • Microsoft .NET Framework

  • Microsoft SQL Server Standard 또는 SQL Server Express

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

  • 브라우저에서 쿠키 설정

    참고참고

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

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

참고참고

이 연습에서는 웹 사이트 프로젝트를 사용합니다. 대신 웹 응용 프로그램 프로젝트를 사용할 수도 있습니다. 이러한 웹 프로젝트 형식 간의 차이점에 대한 자세한 내용은 웹 응용 프로그램 프로젝트와 웹 사이트 프로젝트 비교를 참조하십시오.

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

  1. Visual Studio를 엽니다.

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

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

  3. 설치된 템플릿에서 사용할 언어를 클릭합니다.

  4. 템플릿 목록에서 ASP.NET 빈 웹 사이트를 선택합니다.

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

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

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

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

  8. 확인을 클릭합니다.

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

프로필 속성을 사용하도록 응용 프로그램을 구성하는 것부터 시작합니다. 그런 다음 각 사용자에 대해 추적할 첫 번째 속성을 정의합니다. 이 속성은 이름이 PostalCode이며 익명 사용자와 로그온한 사용자 모두에 대해 추적됩니다.

PostalCode 속성에 대해 웹 사이트를 구성하려면

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

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

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

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

    3. 템플릿 목록에서 웹 구성 파일을 클릭합니다.

    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 파일의 요소는 대/소문자를 구분합니다. 따라서 요소를 복사하거나 표시된 그대로 입력합니다.

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

    • 프로필 속성이 로그온한 사용자에게만 적용되는지 아니면 로그온한 사용자와 익명 사용자 모두에게 적용되는지를 지정하는 anonymousIdentification 요소

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

    • 정의하려는 모든 프로필 속성을 포함하는 properties 요소

    • profile 요소를 정의하는 add 요소

      여기서는 이름이 PostalCodeprofile property를 하나 정의했습니다.

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

      정의하려는 추가 프로필 속성마다 add 요소를 새로 만듭니다.

      참고참고

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

이 단원에서는 이전 단원에서 정의한 PostalCode 값을 설정 및 가져오는 방법을 보여 주는 페이지를 만듭니다.

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

  1. Profiles.aspx라는 사이트에 새 웹 페이지를 추가합니다. 다른 파일에 코드 입력 확인란이 선택되어 있는지 확인합니다.

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

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

    컨트롤

    속성 설정

    TextBox

    ID = PostalCodeTextBox

    Button

    ID = SetPostalCodeButton

    Text = 우편 번호 설정

    Label

    ID = PostalCodeLabel

    Text = (비어 있음)

  4. 우편 번호 설정 단추를 두 번 클릭하여 단추의 Click 이벤트에 대한 처리기를 추가합니다.

  5. 다음 예제와 같이 SetPostalCodeButton_Click 처리기에서 PostalCode 프로필 속성을 설정하는 코드를 추가합니다.

    protected void SetPostalCode_Click(object sender, System.EventArgs e)
    {
        Profile.PostalCode = Server.HtmlEncode(PostalCodeTextBox.Text);
        PostalCodeLabel.Text = Profile.PostalCode;
    }
    

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

  6. 다음 예제와 같이 Profile.PostalCodePage_Load 처리기에 표시하는 코드를 추가합니다.

    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        PostalCodeLabel.Text = Profile.PostalCode
    End Sub
    

    void Page_Load(object sender, System.EventArgs e)
    {
        PostalCodeLabel.Text = Profile.PostalCode;
    }
    

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

PostalCode 프로필 속성 테스트

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

참고참고

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

PostalCode 속성을 테스트하려면

  1. Profiles.aspx를 마우스 오른쪽 단추로 클릭하고 시작 페이지로 설정을 클릭합니다.

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

    사이트에 페이지를 처음으로 요청하는 경우 ASP.NET에서 프로필 정보를 저장하는 데 사용하는 SQL Server 데이터베이스를 만들기 때문에 페이지를 표시하는 데 시간이 걸릴 수 있습니다.

    참고참고

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

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

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

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

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

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

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

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

FavoriteURLs 속성을 정의하려면

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

  2. 다음 예제와 같이 이 연습 앞부분의 "프로필 속성 구성"에서 만든 profile 요소에 "FavoriteURLs"라는 새 속성 요소를 추가합니다.

    <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라는 새 프로필 속성을 추가했습니다. 문자열이나 정수와 같은 단순한 형식이 아닌 프로필 속성의 경우 정규화된 형식을 지정해야 합니다. 여기에서 프로필 속성이 문자열을 보유할 컬렉션이 되도록 지정합니다.

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

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

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

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

    컨트롤

    속성 설정

    TextBox

    ID = FavoriteURLTextBox

    Button

    ID = AddURLButton

    Text = URL 추가

    ListBox

    ID = FavoriteURLsListBox

  2. URL 추가 단추를 두 번 클릭하여 단추의 Click 이벤트에 대한 처리기를 추가합니다.

  3. 다음 예제와 같이 AddURLButton_Click 처리기에서 URL을 목록에 추가하는 코드를 추가합니다.

    protected void AddURL_Click(object sender, System.EventArgs e)
    {    
        String urlString = Server.HtmlEncode(FavoriteURLTextBox.Text);
        if(Profile.FavoriteURLs == null)
        {
            Profile.FavoriteURLs = new 
                System.Collections.Specialized.StringCollection();
        }
        Profile.FavoriteURLs.Add(urlString);
        DisplayFavoriteURLs();
    }
    
    
  4. 다음 예제와 같이 Page_Load 처리기에서 URL 목록을 표시하는 코드를 추가합니다.

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

    void DisplayFavoriteURLs()
    {    
        FavoriteURLsListBox.DataSource = Profile.FavoriteURLs;
        FavoriteURLsListBox.DataBind();
    }
    
    

FavoriteURLs 프로필 속성 테스트

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

FavoriteURLs 속성을 테스트하려면

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

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

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

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

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

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

  5. Profiles.aspx 페이지를 다시 실행하려면 Ctrl+F5를 누릅니다.

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. Profiles.aspx 페이지를 엽니다.

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

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

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

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

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

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

  2. 템플릿 목록에서 전역 응용 프로그램 클래스를 클릭하고 추가를 클릭합니다.

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

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

    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 속성을 그룹화합니다.

    예를 들어, Street, CityPostalCode라는 profile 속성을 Address라는 하나의 그룹으로 구성할 수 있습니다.

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

  • profile 속성으로 관리하는 쇼핑 카트 등의 사용자 지정 형식을 만듭니다.

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

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

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

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

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

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

표시: