[ASP.NET] 익명사용자를 위한 Profile 구성

2012. 3. 14. 08:43WEB

Profile 구축 및 사용

ASP.NET Web Site Project

ASP.NET Web Site Project를 이용하면 Web.config에 구성하는 것만으로 간단히 Profile를 사용하실 수 있습니다.

  1. Web.Config에 Profile 구성합니다.
    <profile>
        <providers>
            <clear/>
            <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
        </providers>
        <properties>
            <!-- allowAnonymous="true" 설정을 통해 익명사용자도 Profile를 이용가능-->
            <add name="FullName" allowAnonymous="true" />
        </properties>
    </profile>
  2. Web.Config에 AnonymousIdentification의 enabled값을 true로 설정하여 익명사용자로 aspnet_Users가 생성되도록 할 수 있습니다.
    <configuration>
        <system.web>
            <anonymousIdentification enabled="true" />
        </system.web>
    </configuration>
  3. C#페이지에서 그냥 사용하기 (Anonymous 상태일 때는 Profile에 값을 할당하면 즉시 Anonymous User가 생성됨)
    Profile.FullName = "최수경";

ASP.NET Web Application Project

ASP.NET Web Application Project, ASP.NET MVC Project에서는 Web Site Project와 같이 Profile Class를 바로 사용할 수 없으므로 다음과 같이 사용합니다.

  1. HttpContext.Profile를 통해 사용
    HttpContext.Profile["FullName"] = "최수경";

ProfileBase를 통한 Profile Class 직접 구현

ASP.NET에서는 ProfileBase Class의 직접 구현을 통해 Profile의 설정 및 접근이 가능하도록 지원합니다.

  1. Web.Config에 Profile를 구성합니다. Properties 속성은 여기에서 지정하셔도 되나 이 예제에서는 Profile 구현 Class에서 정의하도록 합시다.
    <profile>
        <providers>
            <clear/>
            <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
        </providers>
    </profile>
  2. Web.Config에 Anonymousidentification의 enabled값을 true로 설정하여 익명사용자로 aspnet_Users가 생성되도록 합니다.
    <configuration>
        <system.web>
            <anonymousIdentification enabled="true" />
        </system.web>
    </configuration>
  3. ProfileBase를 이용하여 Profile에 접근하는 Profile Class를 구축합니다.
    public class Profile : ProfileBase
    {
        /// <summary>
        /// 현재 유효한 Profile
        /// </summary>
        public static Profile Current
        {
            get
            {
                return new Profile();
            }
        }
    
        /// <summary>
        /// 현재 유효한 Profile이 생성됩니다.
        /// </summary>
        public Profile()
        {
            if (HttpContext.Current.User.Identity.IsAuthenticated == false)
            {
                if (AnonymousIdentificationModule.Enabled)
                    Initialize(HttpContext.Current.Request.AnonymousID, false);
            }
            else
                Initialize(HttpContext.Current.User.Identity.Name, true);
        }
        /// <summary>
        /// 지정한 매개변수에 해당하는 Profile이 생성됩니다.
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="isAnonymous"></param>
        public Profile(string userName, bool isAnonymous)
        {
            Initialize(userName, isAnonymous);
        }
    
    
        // SettingsAllowAnonymous Attribute설정을 통해 Anonymous User가 사용할 수 있는 Profile인지 명시할 수 있습니다.
        [SettingsAllowAnonymous(true)]
        public string FullName
        {
            get { return base["FullName"] as string; }
            set { base["FullName"] = value; Save(); }
        }
    
    }
  4. Web.Config에서 <profile>의 inherit 속성의 값으로 Profile Class를 지정해줍니다.
    <profile inherit="TestProject.Profile">
        <providers>
            <clear/>
              ...
  5. C#페이지에서 사용하기
    Profile.FullName = "최수경";