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
'웹 개발 > 다이어리 프로젝트(개인)' 카테고리의 다른 글
jsp로 crud를 사용한 다이어리 만들기(11)-점심 선택,통계 페이지 추가 (0) | 2024.04.01 |
---|---|
jsp로 crud를 사용한 다이어리 만들기(9)-일기DB 테이블 추가 (1) | 2024.04.01 |
jsp로 crud를 사용한 다이어리 만들기(8)-목록형 다이어리 구현 (0) | 2024.04.01 |
jsp로 crud를 사용한 다이어리 만들기(7)-일기 수정 (0) | 2024.03.27 |
jsp로 crud를 사용한 다이어리 만들기(6)-일기 삭제 (0) | 2024.03.27 |