본문 바로가기

웹 개발/다이어리 프로젝트(개인)

jsp로 crud를 사용한 다이어리 만들기(10)-로그인 session으로 변경

728x90

기존에는 DB의 my_session을 'ON', 'OFF'로 설정해 로그인을 했는지 안했는지 판단하고,

 로그아웃시 특정 페이지 접근 시 로그인폼으로 가게 했지만, 이번에는 session기능을 추가해 DB를 사용하지 않고도 사용할 수 있게 변경해봤다.

 

기존 모든 페이지 상단에 있던 코드

/* 로그인(인증) 분기 */
// [DB] diary.login.my_session -> 'OFF'[로그아웃이 되어있을 경우] -> redirect("loginForm.jsp")

// DB 연결 및 초기화
Class.forName("org.mariadb.jdbc.Driver");
Connection conn = null;
conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3307/diary", "root", "****");

// mySession 값을 가져오는 SQL 쿼리 실행
String getMySessionSql = "SELECT my_session AS mySession FROM login";
PreparedStatement getMySessionStmt = null;
ResultSet getMySessionRs = null;
getMySessionStmt = conn.prepareStatement(getMySessionSql);
getMySessionRs = getMySessionStmt.executeQuery();

// mySession 값
String mySession = null;
if(getMySessionRs.next()) {
    mySession = getMySessionRs.getString("mySession");
}
System.out.println("diaryListOfMonth - mySession = " + mySession);	// mySession 값 확인

// mySession이 OFF일 경우(로그아웃 상태)
if(mySession.equals("OFF")) {
    String errMsg = URLEncoder.encode("잘못된 접근입니다. 로그인 먼저 해주세요.", "UTF-8");
    response.sendRedirect("/diary/login/loginForm.jsp?errMsg=" + errMsg);

    // DB 반납
    getMySessionRs.close();
    getMySessionStmt.close();
    conn.close();

    return ;	// 코드의 진행을 끝 낼때 사용
}

 

session 사용후 

//0. 로그인(인증) 분기
String loginMember = (String)(session.getAttribute("loginMember"));
if(loginMember == null) {
    String errMsg = URLEncoder.encode("잘못된 접근 입니다. 로그인 먼저 해주세요", "utf-8");
    response.sendRedirect("/diary/login/loginForm.jsp?errMsg="+errMsg);
    return;
}

//DB 연결 및 초기화
Class.forName("org.mariadb.jdbc.Driver");
Connection conn = null;
conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3307/diary", "root", "****");

 

코드가 상당히 간결해 진 것을 알 수 있다.

 

Session

  • 웹 사이트에서 사용되는 사용자 정보를 저장하는 방법
  • 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 함
  • 서비스가 사용되는 서버측에 데이터를 저장, 세션의 키 값을 클라이언트에 남겨두고, 브라우저가 필요할 때마다 키 값을 이용해 서버에 저장된 데이터를 사용!

그러나 session은 브라우저별로 각각 가지고 있는 공간이어서 로그인을 한 이외의 브라우저에서 접근을 하게 되면 다시 로그인을 해야하는 경우가 발생!

 

브라우저를 닫거나, 일정 시간이 지나면 session을 비워 사용자 정보를 제거한다는 점에서 보안적인 부분에서는 쿠키라는 것보다는 괜찮다고 한다!

728x90