웹개발 교육/jsp

[57일] jsp (29) - myweb 프로젝트(로그인 시 id 저장)

2022. 10. 18. 13:05
목차
  1. Cookie 클래스

id저장을 체크했을 때 id를 불러와 아이디 입력 칸에 표시해주는 것은 사용자의 pc에 저장된 것을 가져오는 것이다. 이를 쿠키라고 한다.

 

Cookie 클래스

  • javax.servlet.http.Cookie 클래스를 이용한다.
  • Tomcat 서버가 Client에 저장하는 텍스트 파일로 된 정보이다.
  • 보안성이 없음으로 계정과 패스워드를 동시에 쿠키에 저장하면, 쿠키의 내용을 전부 편집기로 열어 볼 수 있음으로 보안에 문제가 될 수 있다.

 

 

아이디가 저장되는 시점은 일반적으로 로그인을 성공했을 때 일 것이다.

 

loginForm.jsp

c_id 값을 가져왔을 때 save가 있으면 아이디를 저장한다.

 

loginProc.jsp

<%@page import="javax.swing.event.MouseInputListener"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="ssi.jsp" %>
<%@ include file="../header.jsp"%>
<!-- 본문 시작 loginProc.jsp-->
<h3>* 로 그 인 결 과 *</h3>
<%
	String id = request.getParameter("id").trim();
	String passwd = request.getParameter("passwd").trim();
	dto.setId(id);
	dto.setPasswd(passwd);
	
	String mlevel = dao.loginProc(dto);
	if(mlevel==null) {
		out.println("<p>아이디/비밀번호 다시 한번 확인해주세요!!</p>");
		out.println("<p><a href='javascript:history.back()'>[다시시도]</a></p>");
	} else {
		//로그인 성공
		//out.print("로그인 성공~~");
		//out.print("회원등급:" + mlevel);
		
		//다른 페이지에서 로그인 상태 정보를 공유할 수 있도록
		session.setAttribute("s_id", id);
		session.setAttribute("s_passwd", passwd);
		session.setAttribute("s_mlevel", mlevel);
		
		//쿠키시작----------------------------------------
		//->웹서버가 사용자PC에 저장하는 텍스트 파일로 된 정보
	    //->각 브라우저의 쿠키삭제의 영향을 받는다
	    //->보안에 취약하다
	    //->예)아이디저장, 오늘창그만보기, 클락한상품목록
		//->예)오늘창그만보기는 자바스크립트 쿠키. 참조)https://www.w3schools.com/js/js_cookies.asp
		
		//<label><input type="checkbox" name="c_id" value="SAVE">아이디 저장
		String c_id = Utility.checkNull(request.getParameter("c_id"));
		Cookie cookie = null;
		if(c_id.equals("SAVE")){ //아이디저장에 체크를 했다면
			//쿠키변수선언 new Cookie("변수명", 값)
			cookie = new Cookie("c_id", id);
			//쿠키의 생존기간 1개월
			cookie.setMaxAge(60*60*24*30); //각 브라우저의 쿠키 삭제의 영향을 받는다
		} else {
			cookie = new Cookie("c_id", "");
			cookie.setMaxAge(0);
		}//if end

		response.addCookie(cookie); //요청한 사용자 PC에 쿠키값을 저장
		//쿠키 끝-----------------------------------------
		
		//첫페이지 이동
		//http://localhost:9090/myweb/index.jsp
		String root = Utility.getRoot(); //myweb반환
		response.sendRedirect(root+"/index.jsp");
	}//if end

%>
<!-- 본문 끝 -->
<%@ include file="../footer.jsp"%>

 

쿠키에 저장된 id를 아이디 창에 보여줘야 한다. 이때 사용자의 PC에 저장된 모든 쿠키를 가져와서 원하는 값을 찾아 출력해주는 것이다.

 

loginForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="ssi.jsp" %>
<%@ include file="auth.jsp"%>
<%@ include file="../header.jsp"%>
<!-- 본문 시작 loginForm.jsp-->
<h3>* 로 그 인 *</h3>

<%if(s_id.equals("guest") || s_passwd.equals("guest") || s_mlevel.equals("guest")) {
	//아이디 저장 쿠키 확인---------------------------------
	Cookie[] cookies = request.getCookies(); //사용자 PC에 저장된 모든 쿠키값 가져오기
	String c_id="";
	if(cookies!=null){ //쿠키가 존재하는지?
		for(int i=0; i<cookies.length; i++){ //모든 쿠키값을 검색
			Cookie cookie = cookies[i]; //쿠키 하나씩 가져오기
			if(cookie.getName().equals("c_id")==true){
				c_id = cookie.getValue();
			}//if end
		}//for end
	}//if end
	//------------------------------------------------
%>
<form name="loginfrm" id="loginfrm" action="loginProc.jsp" onsubmit="return loginCheck()"><!-- myscript.js -->
	<table class="table">
		<tr>
		    <td>
			   <input type="text" name="id" id="id" value="<%=c_id%>" placeholder="아이디" maxlength="10" required>
		    </td>
		    <td rowspan="2">
			   <!-- type=image는 기본 속성이 submit -->
			   <input type="image" src="../images/bt_login.gif">		   
		    </td>
		</tr>
		<tr>
		   <td>
		      <input type="password" name="passwd" id="passwd" placeholder="비밀번호" maxlength="10" required>
		   </td>
		</tr>
		<tr>
		   <td colspan="2">
		      <label><input type="checkbox" name="c_id" value="SAVE" <%if(!c_id.isEmpty()){out.print("checked");}%>>아이디 저장</label>			  
			  &nbsp;&nbsp;&nbsp;
			  <a href="agreement.jsp">회원가입</a>
			  &nbsp;&nbsp;&nbsp;
			  <a href="findID.jsp">아이디/비밀번호찾기</a>
		   </td>
		</tr>		  
	</table>
</form>

<%
} else {
	//로그인 성공했다면
	out.println("<strong>" + s_id + "</strong> 님");
	out.println("<a href='logout.jsp'>[로그아웃]</a>");
	out.println("<br><br>");
	out.println("<a href='memberModify.jsp'>[회원정보수정]</a>");
	out.println("&nbsp;&nbsp;");
	out.println("<a href='memberWithdraw.jsp'>[회원탈퇴]</a>");
}//if end
%>
<!-- 본문끝 -->
<%@ include file="../footer.jsp"%>

아이디 저장에 체크를 했다면, 다시 로그인 화면에 왔을 때 아이디도 출력되고 아이디 저장 체크박스에 체크도 된 상태로 보이도록 했다.

 

아이디 저장 했을 경우

 

아이디 저장 안했을 경우

'웹개발 교육 > jsp' 카테고리의 다른 글

[57일] jsp (31) - myweb 프로젝트(회원가입 유효성 검사)  (0) 2022.10.18
[57일] jsp (30) - myweb 프로젝트(id 중복 확인)  (0) 2022.10.18
[57일] jsp (28) - myweb 프로젝트(회원 등급 별 권한 부여)  (0) 2022.10.18
[55~56일] jsp (27) - myweb 프로젝트(로그인, 로그아웃)  (0) 2022.10.17
[55일] jsp (26) - application, response 내장 객체  (0) 2022.10.17
  1. Cookie 클래스
'웹개발 교육/jsp' 카테고리의 다른 글
  • [57일] jsp (31) - myweb 프로젝트(회원가입 유효성 검사)
  • [57일] jsp (30) - myweb 프로젝트(id 중복 확인)
  • [57일] jsp (28) - myweb 프로젝트(회원 등급 별 권한 부여)
  • [55~56일] jsp (27) - myweb 프로젝트(로그인, 로그아웃)
ewok
ewok
ewok
기록장
ewok
전체
오늘
어제
  • 분류 전체보기
    • 웹개발 교육
      • HTML
      • CSS
      • JavaScript
      • Database
      • Java
      • jQuery
      • Ajax
      • Bootstrap
      • jsp
      • Spring
      • MyBatis
      • 프로젝트
    • JAVA
    • SpringBoot
      • 기초
      • AWS
      • 개인프로젝트
    • Spring Security
    • JPA
    • 테스트코드
    • Error
    • CS
      • 컴퓨터 구조
      • 이산수학
    • 알고리즘
      • 정리
      • Java
    • SQL
    • 자격증
      • SQLD
      • 정보처리기사
    • Git

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 노랭이
  • SQLD
  • sqld 자격증
  • org.hibernate.tool.schema.spi.CommandAcceptanceException
  • sqld 합격
  • 생성자
  • merge commit
  • git bash
  • branch
  • 브랜치
  • org.springframework.beans.factory.UnsatisfiedDependencyException
  • GIT
  • base
  • 버전 관리
  • this

최근 댓글

최근 글

hELLO · Designed By 정상우.
ewok
[57일] jsp (29) - myweb 프로젝트(로그인 시 id 저장)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.