ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•

Controller


UsersController

//pw-change ์š”์ฒญ
@GetMapping("/pw-change")
public ModelAndView pwChange() {
	return new ModelAndView ("user/pw-change");
}

๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ํŽ˜์ด์ง€ ์š”์ฒญ

ํ•ด๋‹น ํŽ˜์ด์ง€๋กœ ์ด๋™

ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ƒˆ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ ์ด ์„ธ๊ฐ€์ง€ ์ •๋ณด๋ฅผ ๋ฐ›์€ ํ›„ ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜๊ณ  ์ƒˆ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ์ƒˆ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์ด ์„œ๋กœ ์ผ์น˜ํ• ์‹œ์—๋งŒ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์„ ํ•˜๋„๋ก ํ•œ๋‹ค.

 

//๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ ์ฒ˜๋ฆฌ ์š”์ฒญ
@PostMapping("/checkPw")
public String checkPw(@RequestBody String pw, HttpSession session) throws Exception {
	
	logger.info("๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ ์š”์ฒญ ๋ฐœ์ƒ");
	
	String result = null;
	BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
	
	UsersVO dbUser = (UsersVO)session.getAttribute("login");
	logger.info("DB ํšŒ์›์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ : " + dbUser.getPw());
	logger.info("ํผ์—์„œ ๋ฐ›์•„์˜จ ๋น„๋ฐ€๋ฒˆํ˜ธ : " + pw);
	
	if(encoder.matches(pw, dbUser.getPw())) {
		result = "pwConfirmOK";
	} else {
		result = "pwConfirmNO";
	}
	
	return result;
	
}

์•ž์„œ ํšŒ์›๊ฐ€์ž…์—์„œ๋Š” ๋น„๋™๊ธฐ์‹์œผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ–ˆ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ๋Š” ๋™๊ธฐ๋ฐฉ์‹์œผ๋กœ ํ™•์ธํ•˜๋„๋ก ํ•˜์˜€๋‹ค. BCryptPassWordEncoder์˜ matches๋ฅผ ์ด์šฉํ•ด์„œ ์ผ์น˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.

 

//๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์š”์ฒญ
@PostMapping("/pw-change")
public String pwChange(@RequestBody UsersVO user, HttpSession session) throws Exception {
	
	logger.info("๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์š”์ฒญ ๋ฐœ์ƒ!!!");
	
	//๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ
	usersService.modifyPw(user);
	
	//๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์„ฑ๊ณต์‹œ ๋กœ๊ทธ์ธ ์„ธ์…˜ ๊ฐ์ฒด ๋‹ค์‹œ ๋‹ด์Œ
	LoginVO modifyUser = new LoginVO();
	modifyUser.setEmail(user.getEmail());
	
	UsersVO mUser = usersService.login(modifyUser);
	logger.info("ํšŒ์›์ •๋ณด ๋ถˆ๋Ÿฌ์˜ค๊ธฐ : " + mUser);
	session.setAttribute("login", mUser);
	
	return "changeSuccess";
}

 

 

 

 

Service


UsersService

//๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ
@Override
public void modifyPw(UsersVO user) throws Exception {
	
	//ํšŒ์› ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด ์„ ์–ธ
	BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
	System.out.println("์•”ํ˜ธํ™” ์ „ ๋น„๋ฐ€๋ฒˆํ˜ธ : " + user.getPw());

	//ํšŒ์› ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ user๊ฐ์ฒด์— ๋‹ค์‹œ ์ €์žฅ
	String securePw = encoder.encode(user.getPw());
	user.setPw(securePw);
	
	System.out.println("์•”ํ˜ธํ™” ํ›„ ๋น„๋ฐ€๋ฒˆํ˜ธ : " + user.getPw());
	
	usersDAO.modifyPw(user);
	
}

๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”์ฒ˜๋ฆฌ๋ฅผ service๋‹จ์—์„œ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

 

 

 

View


pw-change.jsp

$.ajax({
	type: "POST",
	url: "/myapp/user/checkPw",
	headers: {
		"Content-Type": "application/json",
        "X-HTTP-Method-Override": "POST"
	},
	data: pw,
	datatype: "json",
	success: function(result) {			
		console.log(result);
					
		if(result === "pwConfirmOK") {
			$('#pwMsg').html('');
			chk1 = true;
		} else {
			$('#pwMsg').html('');
			chk1 = false;
		}
									
	},
	error : function(error) {
    	console.log("error : " + error);
	}
});

ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž๋Š”์ง€ ์š”์ฒญํ•˜๊ธฐ

 

 

//์ƒˆ๋กœ์šด ๋น„๋ฒˆ
$('#newPw').on('keyup', function() {
	//๋น„๋ฐ€๋ฒˆํ˜ธ ๊ณต๋ฐฑ ํ™•์ธ
	if($("#newPw").val() === ""){
		$('#newPwMsg').html('<b>๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ํ•„์ˆ˜ ์ •๋ณด์ž…๋‹ˆ๋‹ค.</b>');
		chk2 = false;
	}		         
	//๋น„๋ฐ€๋ฒˆํ˜ธ ์œ ํšจ์„ฑ๊ฒ€์‚ฌ
	else if(!getPwCheck.test($("#newPw").val()) || $("#newPw").val().length < 8){
		$('#newPwMsg').html('<b>ํŠน์ˆ˜๋ฌธ์ž ํฌํ•จ 8์ž ์ด์ƒ ์ž…๋ ฅํ•˜์„ธ์š”</b>');
		chk2 = false;
	} else {
		$('#newPwMsg').html('');
		chk2 = true;
	}
			
}); //end of new password
			
			
//๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ
$('#newPwCheck').on('keyup', function() {
	
	if($("#newPwCheck").val() === "") {
		$('#newPwMsg').html('<b">๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์€ ํ•„์ˆ˜ ์ •๋ณด์ž…๋‹ˆ๋‹ค.</b>');
		chk3 = false;
	} else if( $("#newPw").val() != $("#newPwCheck").val() ) {
		$('#newPwMsg').html('<b>๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.</b>');
		chk3 = false;
	} else {
		$('#newPwMsg').html('');
		chk3 = true;
}
	
			});//end of passwordCheck

์ƒˆ๋กœ์šด ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์ด ์„œ๋กœ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ

 

 

//๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์š”์ฒญ์ฒ˜๋ฆฌํ•˜๊ธฐ
$('.emailChkBtn').click(function(e) {
	
	if(chk1 == false) {
		alert('ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค.');	

	} else if(chk2 == false){
		alert('2๋ฒˆ ํ‹€๋ฆผ');
	} else if(chk3 == false){
		alert('3๋ฒˆ ํ‹€๋ฆผ');
			
	} else if(chk1 && chk2 && chk3) {
			
		const userNo = $('#userNo').val();
		const pw = $("#newPw").val();
		const email = $("#email").val();
		const id = $("#id").val();
		const name = $('#name').val();
		const user = {
			userNo: userNo,
			id: id,
            pw: pw,
            email: email,
            name: name
		};
		console.log(user);
					
		$.ajax({
			type: "POST",
			url: "/myapp/user/pw-change",
            headers: {
               "Content-Type": "application/json",
                "X-HTTP-Method-Override": "POST"
            },
            dataType: "text",
            data: JSON.stringify(user),
            success: function(result) {
            	
           	console.log("result: " + result);
            	if(result === "changeSuccess") {
            		alert('๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.');
            		location.href ="/myapp/user/pw-change";
            	} else {
           		alert('ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค.');
	           	}
            }
		});
					
	} else {
		alert('์ž…๋ ฅ์ •๋ณด๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•˜์„ธ์š”.');	
	}
});

๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์š”์ฒญ ์ฒ˜๋ฆฌ

 

๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€