JavaScript/Nodejs

[NodeJS] 로그인/회원가입 구현하기 (로그인편)

반응형

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 를 반환해주기 때문에 저런식으로 작성을 해 준다면 문제없이 작동을 할 것이다.

다음에는 세션유지에 대해서 알아보도록 하겠다.

반응형