팀프로젝트/SpringBoot

스프링 부트 팀플) 20240314_로그인 화면 쿠키

일일일코_장민기 2024. 3. 14. 01:05
728x90

https://goodwoong.tistory.com/125

 

[Spring]Cookie와 활용법(읽기, 생성 및 저장)

쿠키란 ? 쿠키란 하이퍼 텍스트의 기록서(HTTP)의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은

goodwoong.tistory.com

참고 자료

 

 

집에 있다가 프로젝트를 좀 더 만들고 싶어서 STS를 켰다.
정확하게는 조정하는 것이다.

바로 아이디 저장과 자동 로그인 쿠키 코드 조정이다.

 

이전 쿠키는 jsp 안에서 쿠키를 저장하고 불러오는 코드를 구현했다.
당연히 어려운 것도 어려운 것이지만, 무엇보다 큰 문제가 하나 있었다.

바로 쿠키를 저장하는 트리거가 로그인 버튼을 누를 때 발생했기 때문에
잘못된 아이디와 비밀번호를 입력하고 로그인 버튼을 누르면
그 잘못된 아이디와 비밀번호가 저장되고, 각 창에 입력되는 것이었다.

곰곰히 생각하다가 어렵게 만들어서 아쉽지만, 그전 코드를 포기하고
로그인이 성공하면 아이디와 비밀번호를 쿠키에 저장하고,
로그인 화면에서는 onload했을 때 쿠키 값이 있으면
불러오는 식으로 구현하기록 했다.

 

//쿠키 불러오기
	    var cookieID = getCookie("userId");
	    var cookiePW = getCookie("userPw");
	   
 	    쿠키 디버그 코드
		//  console.log("아이디 쿠키: "+ cookieID);
		//  console.log("비밀번호 쿠키: "+ cookiePW);
	    
        //아이디 쿠키가 있으면 아이디 창에 입력 + 아이디 저장 체크
	    if(cookieID){
	    	$("#userId").val(cookieID)
	    	$("#userIdSave").prop("checked",true);
	    } else {
	    	$("#userId").val("")
	    	$("#userIdSave").prop("checked",false);
	    }
	    
	    //비밀번호 쿠키가 있으면 비밀번호 창에 입력 + 자동로그인 체크
	    if(cookiePW){
	    	$("#userPw").val(cookiePW)
	    	$("#autoLogin").prop("checked",true);
	    } else {
	    	$("#userPw").val("")
	    	$("#autoLogin").prop("checked",false);
	    }
	    
		//쿠키 불러오기 함수	    
	    function getCookie(name) {
    		var value = "; " + document.cookie;
    		var parts = value.split("; " + name + "=");
   		 if (parts.length === 2) return parts.pop().split(";").shift();
		}

 

//로그인

@PostMapping("/Logined")

public String LoginToMypage(String userId, String userPw, HttpSession session, boolean userIdSave, HttpServletResponse response, boolean autoLogin) throws NoSuchAlgorithmException, UnsupportedEncodingException, GeneralSecurityException {

String realUserPw = sc.encrypt(userPw);

System.out.println(realUserPw);

System.out.println("아이디 저장: " + userIdSave); //체크되면 true

System.out.println("자동 로그인: " + autoLogin); //체크 안 되면 false

MemberDTO dto = serv.login(userId, realUserPw);

 

if (dto != null) {

session.setAttribute("loginUser", dto);

 

if(autoLogin) {

 

Cookie autoId= new Cookie("userId", userId);

Cookie autoPW= new Cookie("userPw", userPw);

autoId.setMaxAge(60*60*24);

autoPW.setMaxAge(60*60*24);

response.addCookie(autoId);

response.addCookie(autoPW);

 

// System.out.println("등록 오토 아이디"+ autoId);

// System.out.println("등록 오토 패스"+ autoPW);

 

} else {

 

Cookie autoId= new Cookie("userId", null);

Cookie autoPW= new Cookie("userPw", null);

autoId.setMaxAge(0);

autoPW.setMaxAge(0);

response.addCookie(autoId);

response.addCookie(autoPW);

 

// System.out.println("삭제 오토 아이디"+ autoId);

// System.out.println("삭제 오토 패스"+ autoPW);

 

if(userIdSave) {

Cookie id= new Cookie("userId", userId);

id.setMaxAge(60*60*24);

response.addCookie(id);

 

// System.out.println("등록 저장 아이디"+ id);

} else {

Cookie id= new Cookie("userId", null);

id.setMaxAge(0);

response.addCookie(id);

 

// System.out.println("삭제 저장 아이디"+ id);

}

 

}

 

return "main";

} else {

return "member/Find_Info/cantFindUserdata";

}

}

 

중복되는 쿠키 코드를 줄여보고 싶었지만

HttpServletResponse response
이 친구를 어떻게 처치할 줄 몰라서 그냥 적을 수 밖에 없었다...졸립기도 하

 

값 입력도 체크박스 체킹도 아주 잘 된다.

 

 

 

내?일 오늘 밤에는 전체 비밀번호 찾기 창과 회원가입 창에서
새로고침 불가능 함수와 강제 새로고침 시 세션 만료 뜨도록 하는 코드를 짤 예정이다.

그 외에는 openAPI 로그인과 회원가입 + 게시판 작성이 있다.
할 건 거의 다 해 간다...