Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CSS
- 웹프로그래밍
- 백준
- 필기
- 중소기업면접
- 인강
- BOJ
- algorithm
- 프로그래머스
- 수박수박수박수박수?
- 정수내림차순으로배치하기
- 후기
- 알고리즘
- 건보필기
- 웹개발
- 한국재정정보원
- java
- HTML
- 농은면접
- 이클립스
- 부스트코스
- 프로그래밍언어
- 연결요소의개수
- 프로그래밍
- 웹
- Linux
- 코딩
- 공부
- 필기후기
- 확인문제
Archives
- Today
- Total
공부하는 히욤이
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의 #10 Bcrypt로 비밀번호 암호화 하기 본문
Bcrypt 라이브러리
- 데이터베이스에 저장된 비밀번호는 비밀번호가 그대로 드러나기 때문에 안전하지 않음
- 그래서 비밀번호 같은 경우는 암호화하고 저장하기 위해 Bcrypt 라이브러리를 다운
C:\practices\react-node\boiler-plate> npm install bcrypt
Bcrypt로 비밀번호를 암호화
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');
const saltRounds = 10; //10자리인 salt를 만든다
// salt를 이용해서 비밀번호를 암호화
// Schema 생성
const userSchema = mongoose.Schema({
name : {
type : String,
maxlength : 50
},
email : {
type : String,
trim : true, //빈칸을 없애주는 역할
unique : 1
},
password : {
type : String,
minlength :5
},
role : {
type : Number,
default : 0
},
image : String,
token : {
type : String
},
tokenExp : {
type : Number
}
})
// index에서 save하기 전에 실행하는 함수
userSchema.pre('save', function( next ){
var user = this;
if(user.isModified('password')) {
// 비밀번호 암호화
bcrypt.genSalt(saltRounds, function(err, salt){
if(err) {
return next(err);
};
bcrypt.hash(user.password, salt, function (err, hash){
if(err) {
return next(err);
} else {
user.password = hash;
}
// 일이 다 끝나면 next 함수로 index의 save로 보내버림
next();
});
});
}
});
const User = mongoose.model('User',userSchema); //schema를 model로 감싸줌
module.exports = { User }; //다른 곳에서도 쓸 수 있게 exports 해줌
비밀번호는 데이터베이스에 넣기 전에 암호화 되어야 하기 때문에 userSchema.pre('save') 함수를 사용한다.
이 함수는 express에서 제공하는 함수인데 userSchema의 save가 되기 전에 실행된다.
비밀번호가 바뀔때만 암호화가 되어야 하기때문에 user의 password가 수정되면 이라는 조건을 줘야한다.
postman으로 데이터를 넣어보고 database에 비밀번호가 암호화되어 들어갔는지 확인한다.
mongodb에 들어가서 Browse Collections를 클릭한다.
Collections에 quer를 확인한다.
password를 apeach123으로 줬지만 데이터베이스에는 암호화되어 다른 값이 저장된 것을 확인할 수 있다.
'Programming > React+Node' 카테고리의 다른 글
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의 #13 Auth 기능 만들기 (0) | 2021.08.15 |
---|---|
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의 #11-12 로그인 기능 with Bcrypt/토큰 생성 with jsonwebtoken (0) | 2021.08.14 |
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의 #9 비밀 설정 정보 관리 (0) | 2021.08.13 |
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의 #8 Nodemon 설치 (0) | 2021.08.13 |
따라하며 배우는 노드, 리액트 시리즈 - 기본 강의 #7 BodyParser & PostMan & 회원 가입 기능 (0) | 2021.08.13 |