티스토리 뷰

반응형

쿠키를 이용한 로그인 상태 유지하기


웹 사이트의 기본 기능 중 하나는 로그인/로그아웃 기능입니다. 로그인을 하지 않은 상태에서 웹 사이트에 연결을 하면 로그인을 하도록 유도를 하는데, 이는 로그인을 했는지 판단 할 수 있는 방법이 필요하다는 뜻입니다.

로그인 상태를 확인할 때 가장 많이 사용하는 방법이 바로 쿠키를 이용하는 방법입니다.

 

쿠키를 이용하여 다음과 같은 방법으로 로그인 상태를 유지 할 수 있습니다.

 

1. 로그인에 성공하면 특정 이름을 갖는 쿠키를 생성한다.

2. 해당 쿠키가 존재하면 로그인한 상태라고 판단한다.

3.로그아웃하면 해당 쿠키를 삭제한다.

 

 

로그인 처리


먼저 로그인 처리가 되는 페이지를 작성하기전에 간단한 로그인 폼을 작성합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<title>로그인폼</title>
</head>
<body>
    <form action="login.jsp" method = "post" >
        아이디 <input type="text" name = "id" size="15">
        암호    <input type="password" name="password" size="15">
        <input type="submit" value="로그인"> 
    </form>
</body>
</html>

 

간단한 로그인폼을 구성하고 form의 내용을 login.jsp로 보내어 로그인 처리를 하도록 합니다.

 

여기서는 로그인 상태유지에 대해서 배우는 것임으로 단순히 아이디와 비밀번호가 동일하면 로그인이 된 것으로 가정을 하고 진행 하도록 하겠습니다.

 

다음은 login.jsp의 내용입니다.

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
    <%
        String id = request.getParameter("id");
        String password = request.getParameter("password");
    %>
<html>
<head>
 
<title>Insert title here</title>
</head>
<body>
    <%         
        if(id.equals(password))
        {
            response.addCookie(new Cookie("AUTH","id"));
        }
        else
        {
    %>
    <script>
        alert("로그인에 실패하였습니다.")
        histoy.go(-1);
    </script>
    <%
        }
    %>
</body>
</html>

 

response.getParameter을 통해 아이디와 비밀번호를 가지고 와서 두 문자열이 같은지 비교를 합니다.

두 문자열이 같다면 로그인이 된 것으로 간주하고 AUTH라는 이름의 Cookie를 생성합니다.

 

이제 로그인 되었으므로 로그인이 되었는지 판단을 하는 페이지를 작성 해보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.net.URLDecoder"%>
 
<html>
<head>
    
<title></title>
</head>
<body>
    <%
        Cookie[] cookies = request.getCookies();
        if(cookies != null && cookies.length >0)
        {
            for(int i=0;i<cookies.length;i++)
            {
    
                if(cookies[i].getName().equals("AUTH"))
                {
    %>
                    <%=URLDecoder.decode(cookies[i].getValue()) %> 로그인
    <%     
                }
    
            }
        }
    %>
</body>
</html>

loginCheck.jsp는 쿠키 값들 중에서 'AUTH' 쿠키를 찾게 되고 해당 쿠키가 존재하지 않으면 로그인이 안된 상태로 판단하게 되고 쿠키가 존재하면 로그인이 된 상태라고 판단하게 됩니다.

 

 

 

 

 

 

 

 

반응형