[TIL] 구디아카데미 19일차: session, 로그인

Mijin·2023년 5월 5일
0

TIL

목록 보기
18/21
post-thumbnail

드디어 기대하던 로그인 기능을 배우고 연습하였다.

✅웹애플리케이션 사용자

  • 브라우저 별 하나의 사용자 개념이다 (크롬과 엣지는 다른 사용자이고 같은 크롬도 브라우저별로 다른 사용자이다)
  • 웹서버는 사용자가 처음 접근하면 세션ID값을 부여하여 관리한다
  • 웹서버는 부여한 세션ID값을 이용하여 동일한 사용자인지 구분한다(로그인 되면 마이페이지 등 로그인정보에 맞는 메뉴사용가능)
  • 일정시간(디폴트 30분) 동안 연결이 없으면 웹서버는 세션ID를 삭제한다
    출처: https://cafe.naver.com/jjdev

⌨세션ID확인, 세션강제갱신

// 세션ID확인
session.getId();

// 세션갱제갱신 (이전 세션 종료)
session.invalidate();

✅서버측 데이터 저장장소

  • page: 페이지 내에서만 사용 가능하고 페이지를 벗어나면 저장데이터(변수) 소멸
  • session: 개별(브라우저 사용자) 클라이언트가 접근하는 모든 페이지에서 사용가능하고 일정 시간동안 접속 정보가 없으면 소멸
  • application: 톰캣과 같은 WAS프로그램내에 모든 사용자가 접근가능(공유)하며 WAS가 종료되면 소멸
    출처: https://cafe.naver.com/jjdev
	// 페이지 변수는 다른페이지에서 호출할 수 없다 -> 컴파일 에러
	String name = "page local variable : apple";
	// 페이지 속성 변수는 다른페이지에서 호출은 가능하지만 null값이 호출된다.
	pageContext.setAttribute("x", "pageContext:apple");
	
    // 세션에 저장된 내용은 다른 페이지에서도 호출 가능
	session.setAttribute("y", "session:banana");

✅로그인기능 구현하기

	// db에 폼에서 입력한 id(기본키)와 pw가 일치하는 행이 있으면 -> 로그인 성공, 없으면 -> 실패
	// select * from member where id=? and pw=?
	
	final String tableId = "admin";
	final String tablePw = "1234";
	
	if(tableId.equals(id) && tablePw.equals(pw)) {
		System.out.println("loginAction 로그인 성공");
		// 로그인 성공 정보(사용자 ID만)를 세션에 저장
		session.setAttribute("loginId", id);
		response.sendRedirect(request.getContextPath()+"/home.jsp");
	} else {
		System.out.println("loginAction 로그인 실패");
		String msg = URLEncoder.encode("ID와PW 다시입력", "utf-8");
		response.sendRedirect(request.getContextPath()+"/loginForm.jsp?msg="+msg);
	}

💪느낀점

  • 오늘 배운 내용은 간단한데 머리속에서 정리가 안되는 느낌이다;;
  1. 로그인 id와 pw가 DB에 있으면 해당 값을 세션에 저장
  2. 로그아웃은 세션강제종료
  3. 로그인 후 이용가능한 메뉴는 세션에 값이 존재하는 경우(null이 아닌 경우)
// 로그인
session.setAttribute("id", "admin");
// 로그아웃
session.invalidate();
// 로그인 상태에서만 사용가능
if(session.getAttribute("id") != null){
}
profile
개발자로 가는 길 🏃‍♀️

0개의 댓글