For Programmer

7. 데이터베이스 내의 비밀번호 암호화하기 - boiler-plate 제작(backend) 본문

React & Node.js 프로젝트/boiler-plate 제작

7. 데이터베이스 내의 비밀번호 암호화하기 - boiler-plate 제작(backend)

유지광이 2020. 7. 31. 22:42
728x90

https://www.npmjs.com/package/bcrypt

비크립트 사이트

1. 회원가입데이터를 작성 후 회원가입 하는 API 전에 비밀번호를 암호화 하여 회원가입API로 넘길수 있도록 코드작성(models-User.js)

회원가입 API

* 몽고DB에서 제공하는 pre 메서드를 이용한다.

const mongoose = require("mongoose");
const bcrypt = require("bcrypt");
const saltRounds = 10;
userSchema.pre("save", function (next) {
  //save함수가 실행되기전에무엇을한다는의미
  var user = this;

  if (user.isModified("password")) {
    //비밀번호를 암호화 시킨다.
    bcrypt.genSalt(saltRounds, function (err, salt) {
      if (err) return next(err); //next하면은 바로 user.save함수실행됨

      bcrypt.hash(user.password, salt, function (err, hash) {
        if (err) return next(err);
        user.password = hash;
        next();
      });
    });
  } else {
    //비밀번호를변경하지않을땐 그냥바로다음실행
    next();
  }
});

*postman으로 데이터를 보내본 실행결과

* 1234567이 hash값으로 변경되어 저장된다.

728x90
Comments