2021.05.20 - [내가 공부하는것/JavaScript] - [NodeJS] 로그인/회원가입 구현하기 ( 회원가입편 )
>> 내용이 잘 보이지 않는다면 우측 하단의 달 모양을 클릭해주시기 바랍니다. <<
저번에 회원가입을 구현했으니 이제는 로그인을 구현해보자.
SQL SELECT 문
우선, 회원 정보를 가져와야 로그인시 입력한 값과 매칭이 되는지 알 수 있기 때문에 먼저 SELECT 문을 통해 회원의 정보를 가져와보자.
SELECT * FROM member
이렇게 하면 member 에 있는 모든 회원들을 불러올것이다.
하지만 우리는 특정 회원을 찾아야하기 때문에 조건을 추가 할 것이다.
SELECT * FROM member WHERE id='ids'
이렇게 작성을 했을때 id 값이 ids 인 것만 불러오게 된다.
만약, id 값에 ids 가 존재하지 않는다면 아무것도 불러오지 않는다.
자 이제 회원정보를 불러오는 방법을 알았으니 코드에 적용을 해보자.
회원정보 비교
router.js
const db = require('../db/config')
router.post('/login', (req,res,next) =>{
param = [req.body.id, req.body.pw]
db.query('SELECT * FROM member WHERE id=?',param[0],(err,row) => {
if(err) console.log(err)
})
res.end()
})
이렇게 해주면 원하는 값을 가져올 수 있을것이다.
그런데 내가 위에서 없는 id 값을 가져오면 아무것도 출력이 되지 않는다고 했는데 이때는 id가 존재하지 않는것이니 이 조건을 추가해주겠다.
router.js
const db = require('../db/config')
router.post('/login', (req,res,next) =>{
param = [req.body.id, req.body.pw]
db.query('SELECT * FROM member WHERE id=?',param[0],(err,row) => {
if(err) console.log(err)
if(row.length > 0){
//ID가 존재합니다
}else{
console.log('ID가 존재하지 않습니다')
}
})
res.end()
})
이런식으로 조건을 걸 수 있을것이다.
자 그럼 id 가 맞으면 pw 가 맞는지도 한번 비교를 해 보아야 할 것이다.
그런데 우리가 분명 저번 회원가입을 구현하면서 bcrypt를 이용해서 암호화를 했기 때문에 bcrypt를 이용해서 맞는 비밀번호인지 체크를 해 주어야 한다
이 때 bcrypt에서 지원하는 compare 함수를 이용해서 내가 입력한 비밀번호와 서버에 저장된 비밀번호가 서로 일치하는지 비교를 할 것이다.
router.js
const db = require('../db/config')
const bcrypt = require('bcrypt')
const saltRounds = 10
router.post('/login', (req,res,next) =>{
param = [req.body.id, req.body.pw]
db.query('SELECT * FROM member WHERE id=?',param[0],(err,row) => {
if(err) console.log(err)
if(row.length > 0){
bcrypt.compare(param[1],row[0].pw,(error , result)=>{
if(result){
//성공
}else{
//실패
}
})
}else{
console.log('ID가 존재하지 않습니다')
}
})
res.end()
})
compare 에서는 true와 false 를 반환해주기 때문에 저런식으로 작성을 해 준다면 문제없이 작동을 할 것이다.
다음에는 세션유지에 대해서 알아보도록 하겠다.
'JavaScript > Nodejs' 카테고리의 다른 글
[Nodejs] 로그인 / 회원가입 [ Mysql 세팅 및 연동 / express-mysql-session ] (0) | 2021.08.12 |
---|---|
[Nodejs] 로그인/회원가입 구현하기 (세션유지편) (0) | 2021.05.21 |
[NodeJS] 로그인/회원가입 구현하기 ( 회원가입편 ) (3) | 2021.05.20 |
[Node.js] 콜백지옥 벗어나기 async / await (1) | 2021.02.06 |
[Node.js] 콜백지옥 벗어나기 promise (0) | 2021.02.03 |