이전 글, 회원가입 구현
2022.06.02 - [NodeJS] - [NodeJS] Express와 Sequelize-cli를 사용한 회원가입 구현
[NodeJS] Express와 Sequelize-cli를 사용한 회원가입 구현
[NodeJS] Express와 Sequelize-cli를 사용한 DB 연결 지난 글에서 이어진다. 이번에도 저번글에서 참고했다고 밝힌 아래 링크를 참조했다. NodeJS 및 관련 공부처 :: Victolee 의 tistory 블로그 저번 시간에 DB..
gguzuck.tistory.com
이번에는 로그인 구현을 해보도록 하겠다.
로그인을 위해 토큰을 발행해서 쿠키에 저장하는 것은
이전 기본 JWT 토큰 하나로 구현을 했었으나 그렇게 업로드하려면
그 부분은 다시 코드를 짜야하는 바람에(...)
Access 및 Refresh 토큰을 사용한 JWT 방식을 사용하여 다음 글에 업로드할 생각이다.
어떻게 보면 더 안전하고 유지하기 좋은 방식이니 이 방식이 더 좋다고 생각한다.
어쨌건, 이번에는 로그인 방식만 구현하는 것으로 넘어갈 생각이다.
로그인은 기본적으로 먼저 DB에 데이터를 저장하고,
그 데이터를 바탕으로 로그인을 하는것을 의미한다.
순서로 따지면,
1. users/sign_up 에서 회원가입 진행
2. 회원 정보가 DB에 저장
3. users/login에서 로그인 진행
4. 3에서 입력된 정보를 DB와 비교하고,
4-1. 정보가 동일하다면 users 로 리다이렉트
4-2. 정보가 다르다면 users/login으로 재리다이렉트
이런 순으로 진행된다.
순서를 알았으면 이제 구현해보자.
먼저 로그인 UI부터 구현한다.
// ../view/user/login.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h3>로그인</h3>
<form action="/users/login" method="post">
<table>
<tr>
<td>이메일 : </td>
<td><input type="text" name="userEmail"></td>
</tr>
<tr>
<td>비번 : </td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="submit" value="로그인"></td>
</tr>
</table>
</form>
</body>
</html>
위 코드는 이전 참고한 블로그에서 그대로 가져온 내용이며,
매우 기본적인 내용임으로 넘어가도록한다.
위와 같이 UI가 구현되었으니, 이번에도 라우터를 구현할 차례이다.
// ../routes/users.js
//###############################################################################
// 임시 로그인 후 메인 페이지
router.get('/', function(req, res, next) {
if(req.cookies){
console.log(req.cookies);
}
res.send('환영합니다~');
});
//###############################################################################
// 로그인 GET
router.get('/login', function(req, res, next) {
res.render("user/login");
let body = req.body;
});
// 로그인 POST
router.post("/login", async function(req,res,next){
let body = req.body;
let result = await models.user.findOne({
where: {
email : body.userEmail
}
});
let dbPassword = result.dataValues.password;
let inputPassword = body.password;
let salt = result.dataValues.salt;
let hashPassword = crypto.createHash("sha512").update(inputPassword + salt).digest("base64");
// 패스워드로 인증하기.
// 패스워드가 동일하다면 넘어간다.
if(dbPassword === hashPassword){
console.log("비밀번호 일치");
res.redirect("/users");
}
else{
console.log("비밀번호 불일치");
res.redirect("/users/login");
}
});
이로써 로그인 구현이 완료되었다.
다음 글에서는
JWT 방식, 즉, 토큰을 사용하는 인증방식을 구현할 예정이다.
'웹 > NodeJS' 카테고리의 다른 글
[NodeJS] Express와 Sequelize-cli를 사용한 Access 및 Refresh 토큰 구현 (0) | 2022.06.07 |
---|---|
[NodeJS] Express와 Sequelize-cli를 사용한 회원가입 구현 (0) | 2022.06.02 |
[NodeJS] Express와 Sequelize-cli를 사용한 DB 연결 (0) | 2022.06.02 |
[NodeJS] JWT 사용 이유와 VScode로 JWT 기초를 활용한 토큰 생성 및 검증 해보기 (0) | 2022.05.08 |
[NodeJS] AWS 서버 구축 해보기 (0) | 2022.04.17 |
댓글