.NET프로그래밍/ASP.NET 3.5 SP1

WebLoginControl (로그인 컨트롤)

holland14 2009. 10. 15. 11:44


1. Login 서버 컨트롤 사용하기

Login 서버 컨트롤을 사용하면 데이터 저장소로부터 검증될 수 있는 로그인 자격 증명을 제공해서 비인증 사용자를 인증 사용자로 전환할 수 있다.

첫 번째 단계는 Login.aspx라는 새 웹 페이지를 생성해야 한다.

Login.aspx는 비인증 사용자의 자격 증명을 얻기 위해서 사용하는 기본설정 페이지다.

 

--> "Login" 컨트롤.






==> [Login.aspx] 소스코드와 디자인



<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

   

        <asp:Login ID="Login1" runat="server">

        </asp:Login>

   

    </div>

    </form>

</body>

</html>

 




 

[웹 페이지에서의  "Login.aspx" 실행화면]







2. 사용자 추가하기 - CreateUserWizard 컨트롤 사용하기

회원관리 서비스에 사용자를 추가하려면 마이크로소프트 SQL 서버 익스프레스 에디션 데이터 저장소에 등록한다.
회원관리 시스템을 위한 마이크로소프트 SQL 서버 데이터 공급자는 회원관리 서비스에 특화된 SQL 서버 익스트레스 버전 파일을 사용할 수 있다.
ASP.NET은 이 특정 파일이 기존에 존재하지 않을 경우 자동으로 생성한다.
ASPNETDB.MDF 파일을 생성하려면 회원관리 서비스를 활용하는 ASP.NET 서버 컨트롤로 다룬다.
ASPNETDB.MDF 파일이 애플리케이션에 필요할 때 ASP.NET 2.0은 이 파일을 App_Data 폴더 안에 생성한다.





--> "서버 탐색기"의 [ASPNETDB.MDF데이터베이스 - 테이블 - "aspnet_Users"테이블]에서 마우스 우클릭하여 "테이블 데이터 표시"를 클릭하면 "회원가입(등록)"한 회원의 정보가 "aspnet_Users"테이블에 출력되는 것을 아래그림에서 볼 수 있다.(단, "Password"는 관리자도 볼 수 없도록 변환된 문자열로 처리되어 테이블에 출력된다.)






--> "CreateUserWizard" 컨트롤.





==> [Register.aspx] 소스코드 및 디자인.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Register.aspx.cs" Inherits="Register" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

   

        <asp:CreateUserWizard ID="CreateUserWizard1" runat="server">

            <WizardSteps>

                <asp:CreateUserWizardStep runat="server" />

                <asp:CompleteWizardStep runat="server" />

            </WizardSteps>

        </asp:CreateUserWizard>

   

    </div>

    </form>

</body>

</html>

 






[웹 페이지에서의  "Register.aspx" 실행화면]






3. 사용자의 암호 다루기 - PasswordRecovery 컨트롤과 ChangePassword 컨트롤 사용하기


* ChangePassword 서버 컨트롤
    - 사용자의 암호를 브라우저에서 곧바로 변경할 수 있다. 

* PasswordRecovery 서버 컨트롤
    - 사용자가 암호를 잊어버릴 경우 데이터 저장소로부터 암호를 가져오는 수단
    - 사용자가 암호를 잊어버릴 경우 보통 전자우편으로 암호를 알려주기 때문에
       SMTP 서버를 설정해야 한다.



--> "ChangePassword" 컨트롤.





--> "PasswordRecovery" 컨트롤.





==> [UserInfo.aspx] 소스코드 및 디자인


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UserInfo.aspx.cs" Inherits="UserInfo" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <asp:ChangePassword ID="ChangePassword1" runat="server">

    </asp:ChangePassword>

    <div> 

        <br />

        <asp:PasswordRecovery ID="PasswordRecovery1" runat="server">

        </asp:PasswordRecovery> 

    </div>

    </form>

</body>

</html>

 








[웹 페이지에서의  "UserInfo.aspx" 실행화면]






암호를 찾기 위해 사용자 이름을 입력하고 질문에 답했을 경우, 임시 비밀 번호를 바로 보여주는 게 아니라 사용자 메일로 보내게 하기 위해서 "web.config"파일에 "SMTP 서버" 설정하는 코드 삽입

<!-- 메일 서버 세팅 : windows server 2008에서만 에러안남-->

  <system.net>

    <mailSettings>

      <smtp deliveryMethod="Network" from="admin@aaa.com">

        <network defaultCredentials="true" host="localhost" />

      </smtp>

    </mailSettings>

  </system.net>

 




4. 회원관리 서비스 - web.config 파일에 authentication 요소 추가하기



- 폼 인증으로 웹 애플리케이션에 회원관리 서비스를 제공하려면 web.config 파일에서 폼 인증 기능을 활성화
- ASP.NET 2.0에서 제공하는 회원관리 서비스를 활용하는 데 필요한 모든 기능이 활성화

<system.web>

 

<!-- 인증 방식을 windows에서 forms로 변경 -->

        <authentication mode="Forms" />

 



mode
특성 값에 Forms를 설정하면 폼 인증을 사용

 




5. 인증사용자 다루기 - LoginStatus 컨트롤과 LoginName 컨트롤 사용하기


* LoginStatus
   - 하이퍼링크를 눌러서 사이트의로그인과 로그아웃을 수행할 수 있다.

* LoginName
   - 인증 사용자의 사용자 이름을 보여줄 수 있다.

 

--> "LoginStatus" 컨트롤.





--> "LoginName" 컨트롤.






==> [Default.aspx] 소스코드 및 디자인

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:LoginView ID="LoginView1" runat="server">

            <AnonymousTemplate>

                <asp:LoginStatus ID="LoginStatus2" runat="server" />

                <asp:HyperLink ID="lnkRegister" runat="server" NavigateUrl="~/Register.aspx">

                회원가입

                </asp:HyperLink>

            </AnonymousTemplate>

            <LoggedInTemplate>

                <asp:LoginStatus ID="LoginStatus1" runat="server" />

                <asp:HyperLink ID="lnkUserInfo" runat="server" NavigateUrl="~/UserInfo.aspx">

                    <asp:LoginName ID="LoginName1" runat="server" />

                </asp:HyperLink>

            </LoggedInTemplate>

        </asp:LoginView>

    

        <br />

   

    </div>

    </form>

</body>

</html>

 









[웹 페이지에서의  "Default.aspx" 실행화면]