ํฐ์คํ ๋ฆฌ ๋ทฐ
ํด๋ผ์ด์ธํธ๋ก ๋ถํฐ ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์จ๋ค. ๋งคํผ ์ชฝ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ 2๊ฐ๋ฅผ ๋ณด๋ผ ์ ์์ผ๋ ๋ก๊ทธ์ธ ์ ์ฉ LoginVO๋ฅผ ์์ฑ ํด์ฃผ์๋ค. ์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ DB์์ ๋ก๊ทธ์ธ ์๋ํ๋ ํ์์ ์ ๋ณด๋ฅผ ๋ฐ์์จ๋ค. null์ ๋ฆฌํดํ๋ฉด ํด๋น๋๋ ํ์์ด ์กด์ฌํ์ง ์๋ ๊ฒ์ด๊ณ email์ ํด๋นํ๋ ํ์์ด ์กด์ฌํ๋ฉด ํด๋น ํ์์ ์ ์ฒด ์ ๋ณด๋ฅผ ๋ฆฌํดํ๋ค.
controller๋จ์์๋ ํด๋ผ์ด์ธํธ์์ ๋ฐ์์จ ๋น๋ฐ๋ฒํธ ๋ฐ์ดํฐ์ ์กฐํํ ํ์์ ๋น๋ฐ๋ฒํธ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํด์ ๋ก๊ทธ์ธ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ค.
๋ก๊ทธ์ธ์ด ์ฑ๊ณตํ๊ฒ ๋๋ฉด ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ตํ๊ธฐ ์ํด ์ธ์ ๊ณผ ์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ค. ์ธ์ ์ ์๋ช ์ ๋ธ๋ผ์ฐ์ ์คํ๋ถํฐ ์ข ๋ฃ๊น์ง์ด๊ณ (๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋๊ธฐ ์ ์ ์ธ์ ์ ์๋ช ์ด ๋คํ ์ ์๋๋ฐ ์ด๋ ์ธ์ ์ ์ ํจ์๊ฐ ๋๋ฌธ! ๋ฐ๋ก ์ค์ ์ด ๊ฐ๋ฅํ๋ค) ์ฟ ํค๋ ๋ฐ์ดํฐ๊ฐ ๋ก์ปฌ์ ์ฅ์(ํ๋๋์คํฌ, ๊ธฐ์ต์ฅ์น ๋ฑ)์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ์ธ์ ์ ๋ธ๋ผ์ฐ์ ๋ณ๋ก ์ฌ์ฉ์๋ฅผ ์๋ณํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฐ์ด๊ณ ์ฟ ํค๋ ์๋๋ก๊ทธ์ธ ์ฒ๋ฆฌ๋ฅผ ํ ๋ ์ฐ์ธ๋ค.
Controller
UsersController
//๋ก๊ทธ์ธ ๊ฒ์ฆ ์์ฒญ
@PostMapping("/loginCheck")
public String login(@RequestBody LoginVO login, HttpSession session) throws Exception {
logger.info("/user/loginCheck : post์์ฒญ");
//ํ๋ผ๋ฏธํฐ ํ์ธ
System.out.println("๋ก๊ทธ์ธ ์๋ํ ํ์ : " + login);
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
String result = null;
//์๋น์ค๋จ - ๋ก๊ทธ์ธ ์๋ํ ํ์์ ๋ชจ๋ ํ์์ ๋ณด ์กฐํํด์ userVO๊ฐ์ฒด์ ์ ์ฅ
UsersVO user = usersService.login(login);
System.out.println("๋ก๊ทธ์ธ ์๋ํ ํ์์ ๋ชจ๋ ์ ๋ณด : " + user);
//์์ด๋ ์กด์ฌ -> ๊ฐ์
๋ ํ์์ด ์กด์ฌ -> ๋น๋ฐ๋ฒํธ ํ์ธ ํ์
if(user != null) {
//๋น๋ฐ๋ฒํธ ์ผ์น -> ๋ก๊ทธ์ธ์ฑ๊ณต
if(encoder.matches(login.getPw(), user.getPw())) {
result = "loginSuccess";
//๋ก๊ทธ์ธ ์ฑ๊ณต์ ๋ก๊ทธ์ธ ์ ์ง๋ฅผ ์ค์ -> ์ธ์
์ฌ์ฉ
//login์ด๋ผ๋ ์ด๋ฆ์ ์ธ์
์ ๋ก๊ทธ์ธํ ์ฌ๋์ ์ ์ฒด ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
session.setAttribute("login", user);
System.out.println("login ์ธ์
ํ์ธ : " + user);
//๋ธ๋ผ์ฐ์ ๋ซ์ ๋๊น์ง ํน์ ์ธ์
์ ํจ๊ธฐ๊ฐ์ด ๋ง๋ฃ๋๊ธฐ ์ ๊น์ง ์ธ์
์ด ์ฌ์ฉ๋จ
//session.setMaxInactiveInterval(60 * 60); //์ธ์
๋ง๋ฃ์๊ฐ์ 1์๊ฐ์ผ๋ก ์ค์
}
//๋น๋ฐ๋ฒํธ ๋ถ์ผ์น
else {
result = "pwFail";
}
}
//์ด๋ฉ์ผ์ด ์กด์ฌํ์ง ์์
else {
result = "emailFail";
}
return result;
}
DB์ ๋น๋ฒ์ ์ ์ฅํ ๋ ์ํธํ ์์ผ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋์ฝ๋ฉํด์ ๋น๊ตํด์ผํ๋๋ฐ ๋์ฝ๋ฉํด์ ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ฌ ์๋ ์๊ณ ๋ด๋ถ์ ์ผ๋ก ๋์ฝ๋ฉํด์ ๋น๊ตํด์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค. ํด๋์ค BCryptPasswordEncoder์ ํจ์ matches ์ฌ์ฉ
encoder.matches(๋ ๊ฒ์ ๋ฌธ์, ์ธ์ฝ๋ฉ ๋ ๋ฌธ์)
ํด๋ผ์ด์ธํธ๊ฐ ์ ์กํ email๊ณผ pw๋ฅผ ๊ฐ์ง๊ณ DB์์ ํ์์ ์ ๋ณด๋ฅผ ์กฐํํด์ ๋ถ๋ฌ์จ ๋ค์ ๊ฐ ๋น๊ต๋ฅผ ํตํด
- email ๊ฐ์ด ์์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ ์ธก์ผ๋ก ๋ฌธ์์ด emailFail ์ ์ก
- pw๊ฐ ํ๋ฆฐ ๊ฒฝ์ฐ pwFail ์ ์ก
- ๋ก๊ทธ์ธ ์ฑ๊ณต์ loginSuccess ๋ฅผ ์ ์กํ๋ค.
์ธ์ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- HttpServletRequest ๊ฐ์ฒด ์ฌ์ฉ .getSession(); -> ์์ฒญ ์ ๋ณด๋ฅผ ์ป๋ ๋์์ ์ถ๊ฐ์ ์ผ๋ก ์ป์ ๋ ์ฌ์ฉ
- HttpSession ๊ฐ์ฒด ์ฌ์ฉ -> ๊ทธ๋ฅ ์ธ์ ๋ง ํ์ํ๋ค ํ ๋ ์ฌ์ฉ
HttpSession์ ์ฌ์ฉํด ๋ก๊ทธ์ธ ๊ฐ์ฒด๋ฅผ ์ธ์ ์ ์ ์ฅํ๋ค.
Service
UsersService
//๋ก๊ทธ์ธ ์๋ ํ์์ ๋ณด ์กฐํ ์ฒ๋ฆฌ
@Override
public UsersVO login(LoginVO login) throws Exception {
return usersDAO.login(login);
}
View
login.jsp
//๋ก๊ทธ์ธ ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ
$('#login-btn').click(function(e) {
if(chk1 && chk2) {
const email = $('#login_email').val();
const pw = $('#login_pw').val();
//์ฝ์์ ๊ฐ ์ถ๋ ฅ
console.log("email: " + email);
console.log("pw: " + pw);
//json๊ฐ์ฒด์ ๋ด๊ธฐ
const userInfo = {
email: email,
pw: pw
};
$.ajax({
type: "POST",
url: "/myapp/user/loginCheck",
headers: {
"Content-Type": "application/json",
"X-HTTP-Method-Override": "POST"
},
data: JSON.stringify(userInfo),
dataType: "text",
success: function(data) {
console.log("result:" + data);
if(data === "emailFail") {
$('#alert_msg').html('<p>์
๋ ฅํ ์ฌ์ฉ์ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ณ์ ์ ์ฐพ์ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์ด๋ฆ์ ํ์ธํ๊ณ ๋ค์ ์๋ํ์ธ์.</p>');
$('#login_email').focus();
} else if(data === "pwFail") {
$('#login_pw').focus();
$('#alert_msg').html('<p>์๋ชป๋ ๋น๋ฐ๋ฒํธ์
๋๋ค. ๋ค์ ํ์ธํ์ธ์.</p>');
} else if(data === "loginSuccess") {
alert("๋ก๊ทธ์ธ์ฑ๊ณต!");
self.location="/myapp/post/list";
}
}
}); //ํต์ ๋!
} else {
alert('์
๋ ฅ ์ ๋ณด๋ฅผ ๋ค์ ํ์ธํ์ธ์');
}
});
'Project > Instagram' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[spring] ํด๋ก ์ฝ๋ฉ07 User - ํ์์ ๋ณด ๋ณ๊ฒฝ (0) | 2020.04.08 |
---|---|
[spring] ํด๋ก ์ฝ๋ฉ06 User - ๋ก๊ทธ์์ (0) | 2020.04.08 |
[spring] ํด๋ก ์ฝ๋ฉ04 User - ์ค๋ณตํ์ธ (0) | 2019.11.30 |
[spring] ํด๋ก ์ฝ๋ฉ03 User - ํ์๊ฐ์ (0) | 2019.11.29 |
[spring] ํด๋ก ์ฝ๋ฉ02 User - Model, Repository, Mapper, Test, Service, Controller (0) | 2019.11.29 |
- Total
- Today
- Yesterday
- ๊ฐ๋ฐ
- ์๋ฃ๊ตฌ์กฐ
- ๊ฒ์ํ๋ง๋ค๊ธฐ
- Java
- ์ ์ฒด๊ฒ์๋ฌผ ์กฐํ
- java jdk ์ค์น
- ์๊ณ ๋ฆฌ์ฆ
- ๊ฐ๋ฐํ๊ฒฝ๊ตฌ์ถ
- ๊ฒ์ํ ์กฐํ
- java ํ๊ฒฝ๋ณ์
- ๊ฒ์ํ ์ญ์
- ๋ถํธ ์๋์์ฑ
- ๊ฒ์๋ฌผ ์ญ์
- ์ดํด๋ฆฝ์ค ํ๊ธ ์ธ์ฝ๋ฉ
- Algorithm
- typeAliases
- ์จ๋ฆฌ์์ค
- ๋ณ๋ช ์ฒ๋ฆฌ
- ์๋ฐ
- tomcat์ค์น
- ์ดํด๋ฆฝ์ค ์ค์น
- ์คํ๋ง๋ถํธ ์๋์์ฑ
- ๊ฒ์๋ฌผ์กฐํ
- mysql์ค์น
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |