본문 바로가기

Spring

로그인 처리1 - 쿠키, 세션 : 로그인 처리하기 - 서블릿 HTTP 세션1

인프런 영한님의 스프링mvc2편을 보고 정리한 글입니다.

무엇을 배웠나요?

  • 서블릿은 세션을 위해 HttpSession이라는 기능을 제공한다.
  • 서블릿을 통해 HttpSession을 생성하면 JESESSIONID이라는 추정 불가능 한 랜덤값을 지니는 쿠키를 생성한다.
  • 세션을 생성하려면 request.getSession을 사용하면 된다.
  • ex) public HttpSession getSession(boolean create)
  • getSession의 인자에 대해서
    • 만약 true일때는 세션이 있으면 기존 세션을 반환하고 세션이 없다면 새로운 세션을 생성해서 반환한다. 기본값은 true이다.
    • 만약 false인 경우에는 세션이 있으면 기존 세션을 반환하고 없다면 새로운세션을 생성하지 않는 대신에 null을 반환한다.
  • 세션에 데이터를 보관하는 방법은 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember) 을 하면 된다.
    • 하나의 세션에 여러 값을 저장할 수 있다.
  • 세션을 제거하려면 다음 기능을 사용하면 된다 → session.invalidate()
  • 세션의 존재여부에 대해서 확인 하려고 하는 경우에는 request.getSession(false)를 사용하면 의미없는 세션이 생성되는 것을 막을 수 있다.
  • session.getAttribute() 을 이용해서 로그인 시점에 세션에 보관한 회원 객체를 찾는다.
  • 추가로 하나의 세션에 여러 값을 저장할 수 있다.

코드

//세션이 없으면 home
 HttpSession session = request.getSession(false);
 if (session == null) {
	 return "home";
 }

 Member loginMember = (Member)session.getAttribute(SessionConst.LOGIN_MEMBER);

 //세션에 회원 데이터가 없으면 home
 if (loginMember == null) {
	 return "home";
 }

 //세션이 유지되면 로그인으로 이동
 model.addAttribute("member", loginMember);
 return "loginHome";