Node.js
Node.js, MongoDB 로 웹서비스 만들기 - 9. 회원가입(1) - INSERT
포시
2022. 6. 10. 15:50
728x90
전달 받은 값을 DB 에 저장해보자
router.post('/register', (req, res)=>{
console.log('in register post');
let id = req.body.id;
let pw = req.body.pw;
db.collection('login').insertOne({id: id, pw: pw}, (error, result)=>{
res.status(200).send({message: 'ajax 통신 성공 - id: ' + id + ', pw: ' + pw});
})
})
login 콜렉션 안에 insertOne 을 통해 id 와 pw 값을 집어넣는 코드
성공일 경우 error 값이 undefined 가 되고 result 값이 리턴, 실패일 경우는 그 반대로 리턴된다.
테스트 ㄱㄱ
잘들어옴
하지만 이대로면 똑같은 아이디로 계속 가입할 수 있다.
insert 하기전에 먼저 id 값으로 데이터를 찾아보고 없으면 저장시켜주도록 하자
db.collection('login').findOne({id: id}, (error, result)=>{
if(result) {
res.send({code: 0}); // 아이디중복, 가입실패
} else {
db.collection('login').insertOne({id: id, pw: pw}, (error, result)=>{
res.send({code: 1}); // 가입성공
})
}
})
result 값이 있으면 중복인거임
status 리턴은 의미 없는거 같아서 뺐고
message 도 만약에 바꾸게 될 경우 프론트 쪽에서 수정하는게 나아보여서
code 라는 값으로 결과를 전달해주기로 함
$('#register').click(()=>{
const id = $('#id').val();
const pw = $('#pw').val();
$.ajax({
url: '/member/register',
method: 'POST',
data: {id: id, pw: pw},
}).done((result)=>{
if(result.code == 1) {
alert(id + ' 님 환영합니다!');
location.href = '/member/login';
} else {
alert('이미 가입된 아이디입니다.');
$('#id').focus();
}
})
})
성공시 로그인 페이지로 가는 코드와
실패시 아이디 input 값에 focus 를 주는것까지 추가했음
근데 비밀번호 이렇게 그대로 저장하는 사람 없음.
비밀번호 암호화 하는법을 알아보자
Node.js, MongoDB 로 웹서비스 만들기 - 10. 회원가입(2) - bcrypt 암호화
최근 현업쪽에서 bcrypt 를 많이 쓴다고 한다. 좀 살펴봤더니 귀찮게 salt 생성하고 같이 저장하는 방식이 아니라 한번 써볼거임 일단 bcrypt 라이브러리를 사용할 수 있게 터미널을 통해 설치한다. n
4sii.tistory.com
728x90