회원가입 기능
client ↔ server
client - 크롬 브라우저
ex) git hub 회원가입 → 크롬 브라우저에서
server에서 받을 떄 BodyParser dependency 이용해서 받음
→ npm install body-parser --save
post man 다운
클라이언트를 만들어 놓은게 없어서 postman 사용
register router
npm run start → 위의 connectied 까지 확인
post → raw → 위와 같이 적기 → send
error 1 : mogodb가 ip를 넣어서 만들었더니 카페에서 가서 했더니 역시나 연결이 되지 않았다. 삭제 후 해당 장소에 ip를 추가하고 create 함
Node Mon → 소스를 변경할때 그걸 감지해서 자동으로 서버를 재 시작해주는 tool
Node Mon 다운 → npm install nodemon --save-dev
node를 이용해서 index.js 를 실행 → nodemon을 이용해서 index.js 를 실행
(backend이름은 상관 x)
npm run backend
→ index.js 의 app.get('/', (req, res) => {res.send('Hello World!')}) 안의 내용을 바꾸고 저장하면 localhose:3000의 내용도 바뀜
MongoDB 확인
현재 데이터 베이스에 저장된 비밀번호를 보면 너무 안전하지 않음
→ 그래서 Bcrypt를 이용하여 비밀 번호를 암호화 해줘서 Database에 저장해줘야 함
→ npm install bcrypt
Bcrypt로 비밀번호 암호화 하는 순서
3.1 먼저 register route로 가기
3.2 유저 정보들을 database에 저장하기 전에가 암호화 할 타이밍
3.3 salt를 이용해서 비밀번호를 암호화 해야됨(salt 생성, saltRounds = salt 몇글자인지)
(bcrypt 보면서 진행)
myPlaintextPassword → 순수하게 user가 입력한 password
User.js 추가
const bcrypt = require('bcrypt');
const saltRounds = 10
Postman & mongDB
auth route 만드는 이유
auth route 만들기
cookie에서 저장된 token을 server에서 가져와서 복호화를 한다.
복호화를 하면 User ID가 나오는데 그 User ID를 이용해서 DB User Collection에서 유저를 찾은 후 쿠키에서 받아온 token이 유저도 갖고 있는지 확인
2.1 쿠키가 일치 x → Authentication False !!
2.2 쿠키가 일치 o → Authentication True !!
그리고 그 해당 하는 유저의 정보들을 선별해서 프론트 엔드로 보내준다
로그아웃 기능 만들기
로그아웃 Route 만들기
로그 아웃 하려는 유저를 DB에서 찾아서
그 유저의 토큰을 지워 준다
middleware/auth.js → 추가 code는 해당 git에서 확인
const { User } = require("../models/User");
let auth = (req, res, next) => {
//인증 처리를 하는 곳
// 클라이언트 쿠키에서 토큰을 가져옴
let token = req.cookies.x_auth;
// console.log(req.cookies)
// 토큰을 복호화 한 후 유저를 찾기
User.findByToken(token, (err,user) => {
if(err) throw err;
if(!user) return res.json({isAuth : false, error : true})
req.token = token
req.user = user
next()
})
}
module.exports = {auth};
error : {"isAuth" : false, "error" : true}
index.js의 logout auth가 문제가 있어서 계속 오류가 나왔다. function이 정의된 User.js랑 auth.js에서 congole.log를 찍어보니 오타였다...
login에 cookie에서는 "x-auth"라고 하고 cookies를 가져올때는 "x_auth"라고 적었다. Postman에서 꼭 cookies 내용을 확인하길 바란다.
logout이 원활하게 실행되면 아래와 같이 나온다.