강디너의 개발 일지

프로젝트_v6 Express CRUD 만들기 + 암호화 본문

Javascript/토이프로젝트

프로젝트_v6 Express CRUD 만들기 + 암호화

강디너 2019. 1. 31. 22:48
728x90

CRUD 중 R은 전 시간에 했고, C 와 D 를 해보겠습니다.


Create

Read

Update

Delete


*준비물*

Insonomia



1. 모델을 정의해줍니다.


User로 정의했습니다.


class User {
constructor(user_id, user_pwd, user_role){
this.user_id = user_id;
this.user_pwd = user_pwd;
this.user_role = user_role;
}

}



2. 비밀번호 암호화


Node 에는 crypto 라는 내장 모듈이 있습니다.


우선 config 에 KEY를 하나 추가해줍니다.




그 후 crypto와 secret 을 선언해줍니다.




테스트 해보겠습니다.







암호화가 잘 되는것을 볼수 있습니다.



3. 사용자 등록



사용자 등록 쿼리

이름, 비밀번호, 역할 등록해줄겁니다.

app.post('/users/register', (req, res) => { const hash = crypto.createHmac('sha256', secret) .update(req.body.pwd) .digest('base64') User.user_id = req.body.id; User.user_pwd = hash; User.user_role = req.body.role; console.log(User); // 유저 등록 if (User.user_id && User.user_pwd && User.user_role) { connection.query(`SELECT user_id FROM user WHERE user_id = "${User.user_id}"`, function (error, check_result, fields) { if (check_result.length == 0) { connection.query(`INSERT INTO user (user_id, user_pwd, user_role) VALUES ("${User.user_id }", "${User.user_pwd}", "${User.user_role}")`, function (error, results, fields) { if (error) { console.log(error); } res.status(200).json({ 'status': 200, 'msg': 'success' }); }); } else { res.status(400).json({ 'status': 400, 'msg': '중복 ID' }); } }); } else { res.status(400).json({ 'status': 400, 'msg': '값을 다 채워주세요' }); } });

4. 사용자 삭제

id를 보내면 삭제하는 기능을 가지고 있습니다.

app.delete('/users/:id', (req, res) => { // 유저 삭제 const id = req.params.id; connection.query(`DELETE FROM user WHERE user_id = "${id}"`, function (error, results, fields) { if (error) { console.log(error); } if (results.length == 0) { console.log('찾는값 없음'); return res.status(400).json({ error: 'Incorrect id' }); } res.status(201).send('success'); }); });


해시한 암호를 넣기 위해서

그간 만든 id들을 삭제합시다.



그리고 다시 아이디를 만듭시다.




확인 한번 해보겠습니다.





반응형
Comments