bcrypt
이용하여 password
암호화지난 목요일 이후 금요일부터(크리스마스
)부터 주말까지 공식 스케줄은 쉬는날이었다.
그래서 오늘 팀원들과 오랜만에 다시 만났는데, 뭐랄까 3일을 쉬고 다시 만나다보니 처음 프로젝트를 시작했을 때의 떨림이 있었다.
다시 생각해보니 그건 아무래도 오늘부터 code
를 작성하기때문이 아닐까 생각한다.
여느때처럼, 우리 팀은 오전 10시에 Meet
로 만나서 짧게 프론트엔드
와 백엔드
간의 스케줄을 공유했고, ISSUE
가 발생하는 일이 생긴다면, Slack
으로 연락하기로 했다.
짧은 오전 미팅 후 각 파트별 팀원들끼리 다시 미팅을 시작했고
나는 백엔드
이기 때문에 백엔드
팀원과 함께 이전에 작성해 둔 GitHub
의 Milestones
스케줄대로 작업을 이행하기로 했다.
우리의 오늘 스케줄은
크게 잡은 스케줄은 위의 3가지이다.
Token
관련은 같이 코드를 작성하기로 했었다.
이 부분은 인증
과 관련이 있고, 앞으로 작성해 나갈 부분에서 크게 차지하고 있으며,
또 서로 이 부분에 대해서 확실하게 짚고 넘어가야 하는 부분이라 생각했기 때문이다.
Token
을 작성하면서 우리는 Schema
를 작성할 때 미처 생각치 못한 refreshToken
의 레코드를 추가로 작성을 해주었다.
$ npx sequelize-cli db:migrate:undo
이 작업을 진행하면서 알게 된 부분이 undo
를 한다고해서 VS code
에 작성한 model
은 수정이 되지 않는다는 것을 알았다.
우리는 undo
를 하면 DB
수정과 함께 model
도 수정이 되는 줄 알았는데 보기좋게 예상과 빗나갔다.
또한, Token
에 관련된 작업을 실행하기 위해 tokenRequest.js
를 만들었고,
이 js
파일에서 유효성 검사 및 토큰 만료시간에 따른 Error
처리를 해주었다.
bcrypt
를 이용하여 패스워드 암호화하여 데이터베이스에 넣기findOrCreate
로 유저의 정보를 찾고, 없으면 생성bcrypt
를 이용해 암호화까지는 성공했지만, 데이터베이스에 넣어지지 않았음findOrCreate
에서 새로운 유저를 생성하는 defaults
부분에서 bcrypt
를 할 시 에러 및 {}
빈 객체가 데이터베이스에 들어간다.findOrCreate
에서 .then(([user, created]))
이용password
를 bcrypt
하는데 이 때, password
는 암호화가 되지만, 데이터베이스에는 안들어간다.findOne
으로 유저를 찾고, password
를 bcrypt
이용해 해시create()
를 이용해 유저 생성하고, password
에 암호화된 password
를 넣는다.password
가 들어간다.1. install
$ npm install bcrypt
2. 비동기 사용을 권장한다
const bcrypt = require('bcrypt')
const saltRoounds = 10; // 암호화된 문구길이
3. 암호해시 방법
bcrypt.genSalt(saltRounds, function(err, salt) {
bcrypt.hash(myPlaintextPassword, salt, function(err, hash) {
// 비밀번호 DB에 해시 저장
});
});
bcrypy.hash(myPlaintextPassword, saltRounds, function(err, hash) {
// 비밀번호 DB에 해시 저장
});
회원탈퇴는 destroy()
를 이용하여 데이터베이스에서 삭제한다.