포시코딩

Node.js, MongoDB 로 웹서비스 만들기 - 11. 회원가입, 로그인 - bcrypt 본문

Node.js

Node.js, MongoDB 로 웹서비스 만들기 - 11. 회원가입, 로그인 - bcrypt

포시 2022. 6. 26. 20:51
728x90

이전 게시글에서 bcrypt 를 이용해 암호화 하는 방법을 알아봤으니

기존에 있던 회원가입 로직을 

받아낸 비밀번호를 암호화 한 이후에 동작하게 조합하였다. 

router.post('/register', (req, res) => {
    let id = req.body.id;
    let pw = req.body.pw;
    const saltRounds = 10;

    bcrypt.hash(pw, saltRounds, (err, hash)=>{
        try {
            db.collection('login').findOne({
                id: id
            }, (error, result) => {
                if (result) {
                    res.send({
                        code: 0
                    });
                } else {
                    db.collection('login').insertOne({
                        id: id,
                        pw: hash
                    }, (error, result) => {
                        res.send({
                            code: 1
                        });
                    })
                }
            })
        } catch {
            console.log('err: ' + err);
        }
    })
})

저장하고 바로 테스트 ㄱㄱ

 

4글자인 비밀번호가 잘 암호화되었다.

비밀번호도 암호화시켜 db 에 저장했으니

로그인할때도 적용해보자

로그인 하는 로직은 없었으므로 한번에 만들거임

router.post('/login', (req, res) => {
    let id = req.body.id;
    let pw = req.body.pw;

    db.collection('login').findOne({id: id}, (error, result)=>{
        if(result) {
            let enc_pw = result.pw;
            bcrypt.compare(pw, enc_pw, (error, result)=>{
                try {
                    if(result) {
                        res.send({
                            code: 1
                        });
                    } else {
                        res.send({
                            code: 0
                        });
                    }
                } catch(err) {
                    console.log(err);
                    res.send({
                        code: 0
                    });
                }
            })
        } else {
            res.send({
                code: 0
            });
        }
    })
})
$('#login').click(()=>{
const id = $('#id').val();
const pw = $('#pw').val();

$.ajax({
  url: '/member/login', 
  method: 'POST', 
  data: {id: id, pw: pw}, 
}).done((result)=>{
  if(result.code == 1) {
    alert(id + ' 님 로그인성공!');
    location.href = '/';
  } else {
    alert('아이디, 비밀번호 확인하셈');
    $('#id').focus();
  }
        })
      })

기본적인 틀은 회원가입에서 그대로 가져왔다. 

 

로그인 로직까지 구현했으니 다음으로는 로그인 정보를 session 에 저장해서 쓰는법을 알아보자

 

 

 

 

https://4sii.tistory.com/33

 

Node.js, MongoDB 로 웹서비스 만들기 - 12. 로그인(1) - passport

로그인은 Node.js Express 의 인증 미들웨어인 Passport.js 를 이용해 구현할거임 먼저 설치 ㄱㄱ npm install passport passport-local express-session member.js const passport = require('passport'); const LocalStrategy = require('passpo

4sii.tistory.com

728x90