본문 바로가기

JSP

세션 로그인

 

 

request.getSession()을 이용한 세션 생성

<%@ page session = "false" %>

<%

HttpSession httpSession = request.getSession();

/* session이 생성된 경우에만 session 객체를 리턴한다 */

List list = (List)httpSession.getAttribute("list");

list.add(productld);

/* session이 생성되어 있지 않은 경우 새롭게 session을 생성해서 리턴한다! */

 

%>

 

 

 

<%@ page session = "false" %>

<%

HttpSession httpSession = request.getSession(false);

/* session이 생성된 경우에만 session 객체를 리턴한다 */

 

List list = null;

if (httpSession != null) {

/* session 객체가 생성되어 있지 않은 경우에는 null을 리턴함 */

lisr = (List)httpSession.getAttribute("list");

} else {

list = Collections.emptyList();

}

 

%>

 

 

 


 

 

 

 

 

세션을 이용한 로그인

 

 

 

 

Session은 쿠키에 비밀번호와 같은 인증 정보를 저장하지 않고,

대신 JSESSIONID (session id) 라는 식별자를 저장한다

만일 쿠키에 Sessionld가 존재하지 않다면, 서버에 요청하여 Sessionid를 받아 쿠키에 보관한다

그 다음, 클라이언트가 서버에 요청을 할 때, 서버는 sessionid를 key로 가지고 있는 value값을 조회하여
로그인 여부와 중요 정보 등을 확인한다.

 

 

 


 

 

 

세션을 사용한 인증 정보 유지 특징들

 

 

세션 아이디 (JESSIONID) 를 브라우저 단위로 저장이 되고, 브라우저 종료시 소멸된다.

로그인에 성공하면 session 기본 객체의 특정 속성에 데이터를 기록한다

로그인한 유저 외에도 세션을 생성한다 

        session 기본 객체의 특정 속성이 존재하면 로그인한 것으로 간주하기 때문이다! 

로그아웃할 경우 session.invalidate() 메서드를 호출하여 새로운 사용자로 인식하고 세션을 종료한다.

사용자 로그인이나 개인정보들을 세션에 담아두면 불필요한 DB의 접근을 막을 수가 있다

서버에 데이터를 저장하기 떄문에 사용자 개인 컴퓨터보다 비교적으로 안전하다 (쿠키보다 안전하다)

 

 

 

 

 

 

 

 

 

 

 

2. 인증된 사용자 정보 session 기본 객체에 저장하기

세션을 사용해서 로그인 상태를 유지하려면 session 기본 객체의 속성에 로그인 성공 정보를 저장하면 된다. 예를 들면 아래 코드와 같이 session 기본 객체의 특정 속성을 로그인 상태 정보로 사용하면 된다.

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%

String id = request.getParameter("id");

String password = request.getParameter("password");

 

              if(id.equals(password)){

                    session.setAttribute("MEMBERID", id);

%>

<html>

<head>

               <title>로그인 성공</title>

</head>

<body>

 

                 로그인에 성공했습니다.

 

</body>

</html>

    <%

             }     else { // 로그인 실패 시

     %>

<script>

               alert("로그인에 실패하였습니다.")

               history.go(-1);

</script>

<%

    ]

%>

 

sessionLogin.jsp는 id 요청 파라미터와 password 요청 파라미터가 같으면 로그인에 성공한 것으로 간주하고, session 기본 객체의 "MEMBERID" 속성에 아이디 정보를 저장한다. 즉, "MEMBERID" 속성이 존재하면 현재 사용자는 로그인한 사용자로 간주한다. 이 코드는 단순히 세션을 이용한 로그인 처리 방식을 보여주기 위한 예제로, 실제 로그인 처리 코드는 이보다 더 복잡하다.

 

 

 

 

 

 

로그아웃 처리

 

로그아웃을 처리할 때는 session.invalidate() 메서드를 사용하여 세션을 종료하면 된다.

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%

                 session.invalidate();

%>

<html>

<head>

                 <title>로그아웃</title>

</head>

<body>

 

                    로그아웃하였습니다.

 

</body>

</html>

 

 

 

 

 

session.invalidate() 메서드를 호출하지 않고,

로그인 표식만 관련된 session 기본 객체를 모두 삭제해도 로그아웃 한 효과를 낼 수 있다.

 

session.removeAttribute ("MEMBERID");

 

 

But ..

로그인을 할 때 session 기본 객체에 추가되는 속성이 늘어나게 되면
더불어 로그아웃 코드도 함께 변경해주어야 해서

가급적이면 session.invalidate() 메서드를 사용해서 로그아웃을 구현하는게 좋다! 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'JSP' 카테고리의 다른 글

JSTL  (0) 2023.11.02
EL 표현식 문법과 사용 방법  (0) 2023.11.02
세션  (0) 2023.10.26
JSP 쿠키  (0) 2023.10.26
JSP 기초 / 선행학습 / JSP 주석사용 / JSP 코드  (0) 2023.10.25