반응형

 

 

회원이 필요한 웹페이지라면, 로그인 처리는 필수이다.

ASP.NET에서는 로그인을 구현하기 위해서, LoginView 컨트롤을 사용하면 간단하게 구현할 수 있다.

 

MSDN에는 정확한 방법이 설명되어 있지 않아,(내가 못 찾은 거 일수도 있으니, 혹시 알고 계시면 댓글로...부탁드립니다.)

내가 테스트해보고 간단하게 구현해본 코드를 보면서 확인해보자.

 

일단 LoginView 컨트롤을 사용하려면, 브라우저 Cookie(쿠키)를 이용해야 한다.

이전에, Javascript로 쿠키를 설정하는 방법을 포스팅했는데 Javascript로 쿠키를 설정하는 것도 참고하자.

2019/12/04 - [개발/Javascript] - [Javascript] 쿠키(Cookie) 사용방법.(feat.팝업)

 

[Javascript] 쿠키(Cookie) 사용방법.(feat.팝업)

쿠키(Cookie) 란? 쿠키란, 인터넷 웹사이트의 방문기록을 남겨 사용자와 웹사이트 사이를 연결해주는 정보라고 요약할 수 있다. 방문기록뿐만 아니라, 회원들의 정보등 여러 가지 정보를 가지고 ��

im-first-rate.tistory.com

하지만, 이번에는 Javascript가 아닌 C# Behind Code에서 쿠키 생성/삭제를 사용할 예정이다.

 

로그인 시, 쿠키 설정

1
2
3
4
5
6
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName) { 
    Domain = "localhost",
    Expires = DateTime.Now.AddDays(3),
    Value = FormsAuthentication.Encrypt(new FormsAuthenticationTicket("Jack"false60))
};
HttpContext.Current.Response.Cookies.Add(cookie);
cs

DB에서 사용자 정보를 조회한 후,

올바른 사용자라면 쿠키를 설정해주면 된다.

 

위 쿠키를 설정해주는 코드를 보면 자주(?) 등장하는 클래스가 보인다.

FormsAuthentication 클래스이다.

해당 클래스는 웹 애플리케이션의 폼 인증 서비스를 관리하는 클래스이다.

FormsAuthentication 클래스에서 자주 사용되는 속성 및 메서드에서 대해서 알아보자.

 

FormsAuthentication.FormsCookieName 속성 

 

속성의 이름에서 알 수 있듯이, 쿠키의 이름을 가져오는 속성이다. 하지만 아래 그림에서 해당 속성의 설명을 보면 get으로 되어있다.

FormsCookieName 속성 설명

Q: 그렇다면 set은 어디서 해야 하는가?

A: 해당 값은 Web.config에서 설정 가능하다.

1
2
3
4
5
<system.web>
    <authentication mode="Forms">
      <forms name=".TEST" protection="All" path="/" timeout="1440" loginUrl="https://localhost:44335/login" enableCrossAppRedirects="true" />
    </authentication>
</system.web>
cs

FormsCookieName뿐만 아니라, 아래 속성 값들도 Web.config에서 수정 가능하니 참고하자.

 

web.config 속성 FormsAuthentication 속성
name FormsCookieName
logurl LoginUrl
timeout Timeout
enableCrossAppRedirects EnableCrossAppRedirects

 

FormsAuthentication.Encrypt 메서드

Encrypt = 암호화. 암호화하는 메서드이다.

암호화하는 값은 FormsAuthenticationTicket이다.

FormsAuthenticationTicket 생성자

3가지 생성자가 있다. 설명은 MSDN에 자세히 나와있으니 자세한 설명은 생략한다.

여기서 가장 중요한 값이라고 판단되는 파라미터는 name / userData이다.

name에는 사용자 이름 혹은 아이디를 설정해주면 될 것이고, userData에는 구분자를 이용하여 여러 가지 사용자 정보를 넣어서 암호화 처리하면 된다.

해당 값이 쿠키에 저장되니, 그 값을 복호화하여 개발자 입맛에 맞게 잘 활용하면 된다.

 

그리고 name이라는 값은, LoginName 컨트롤에 해당 값이 있다면 자동으로 들어가니 이점 참고하자.

 

로그아웃 시, 쿠키 삭제

1
2
3
4
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName) {
    Expires = DateTime.Now.AddDays(-1)
};
HttpContext.Current.Response.Cookies.Add(cookie);
cs

로그아웃 할 때는 해당 쿠키 이름으로 조회를 해서, Expires를 지나간 시간으로 설정해주면 된다.

 

LoginView 컨트롤 설정

1
2
3
4
5
6
7
8
9
<asp:LoginView runat="server">
    <AnonymousTemplate>
        Before Login
    </AnonymousTemplate>
    <LoggedInTemplate>
        After Login
        <h3><asp:LoginName runat="server" /></h3>님 반갑습니다.
    </LoggedInTemplate>
</asp:LoginView>
cs

LoginView 컨트롤을 설정해주면 된다.

AnonymousTemplate 로그인 전, HTML을 작성해주면 된다.
LoggedInTemplate 로그인 후, HTML을 작성해주면 된다. 쿠키에 저장한 name값이 LogingName 컨트롤에 자동적으로 들어가니 이점 참고하자.

 

회원 정보가 필요한 서비스라면, LoginView 컨트롤을 이용해서 웹사이트를 편리하게 구축해보자.

 

반응형

+ Recent posts