알림
본 포스팅은 공부 목적으로 작성된 글이며 상업적 목적으로 절대 사용되지 않았음을 밝힙니다.
회원가입 하기
app.post('/api/users/register', (req, res) => {
// 회원 가입 할 때 필요한 정보들을 client에서 가져오면 그것들을 데이터 베이스에 넣어줌
const user = new User(req.body);
user.save((err, userInfo) => {
if (err) return res.json({success : false, err})
return res.status(200).json({
success : true
})
})
})
이메일은 test@naver.com, 비밀번호는 1234567로 회원가입을 진행했습니다.
비밀번호 암호화
npm install bcrypt --save
# bcrypt를 설치
mongoDB에서 확인해 보면, 비밀번호가 암호화 된 것을 확인하실 수 있습니다.
npm install jsonwebtoken --save
# jsonwebtoken 설치
npm install cookie-parser --save
# cookie-parser 설치
로그인
app.post('/api/users/login', (req, res) => {
// 1. 데이터베이스 안에서 요청된 이메일 찾기
User.findOne({ email: req.body.email }, (err, user) => {
if(!user) {
return res.json({
loginSuccess: false,
message: "가입 안 된 사용자로 확인됩니다."
})
}
// 2. 요청된 이메일이 데이터베이스에 있다면 비밀번호가 맞는지 확인하기
user.comparePassword(req.body.password, (err, isMatch) => {
if(!isMatch) // isMatch가 없다면 비밀번호가 같지 않다는 거니까
return res.json({loginSuccess: false, message: "비밀번호가 틀렸습니다."})
// 3. 비밀번호까지 맞다면 토큰 생성
user.generateToken((err, user) => {
if(err) return res.status(400).send(err);
// 토큰을 저장한다. 어디에? 쿠키, 로컬스토리지
res.cookie("x_auth", user.token)
.status(200) // 200 성공 400 실패
.json({loginSuccess: true, userId: user._id})
})
})
})
})
로그인이 성공적으로 완료되었고,
로그인이 되어 토큰이 생긴 것도 확인할 수 있습니다.
로그아웃
app.get('/api/users/logout', auth, (req, res) => {
User.findOneAndUpdate({_id: req.user._id},
{ token: ""}
,(err, user) => {
if (err) return res.json({ success: false, err})
return res.status(200).send({
success:true
})
})
})
token이 사라진 것을 확인할 수 있습니다.(= 로그아웃 완료)
'BE > Node.js' 카테고리의 다른 글
[Node.js] Node.js 설치 및 환경 세팅 + 복습 (0) | 2021.07.27 |
---|
댓글