728x90
Node.js 3차 미니프로젝트 middleware, auth
node.js 쿠키 가져오기
필요한 라이브러리 : cookie-parser
📄 app.js
const cookieParser = require('cookie-parser');
const app = express();
app.use(cookieParser());
// 쿠키 가져오기
app.get('/api', function (req, res) {
console.log(req.cookies);
})
📌 토큰 값이 있을 경우
{ token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOnsidXNlcklkIjo1fSwiaWF0IjoxNjcyNzA5ODA4LCJleHAiOjE2NzI3OTYyMDh9.WKlllE1RWonYxTr8ihvBVhIyAslO_Ofc_Z98VrptL78'
}
객체 형태로 cookie값이 들어오는 걸 확인할 수 있다.
📌 토큰값이 없을 경우
첫번째 cosole.log(req.cookies['token'])값이고
두번째는 console.log(req.cookies) 출력값이다.
📄 app.js
// 쿠키 가져오기
app.get('/api', function (req, res) {
const token = req.cookies['token'];
if(!token) {
console.log("로그인 후 이용해 주세요!");
return;
}
const { userId } = jwt.verify(token, process.env.SECRET_KEY);
console.log(`${userId.userId} 님이 로그인 하셨습니다.`);
})
middleware auth 만들기
📄 middlewares/auth-middleware.js
const jwt = require('jsonwebtoken');
const cookieParser = require('cookie-parser');
const { user } = require('../models/user');
const app = express();
app.use(cookieParser());
module.exports = (req, res, next) => {
const token = req.cookies['token'];
if(!token){
res.status(401).send({
errorMessage: "로그인 후 이용해 주세요."
});
return;
}
try {
const { userId } = jwt.verify(token, process.env.SECRET_KEY);
user.findByPk(userId).then((user) => {
res.locals.user = user;
next();
});
} catch (err) {
res.status(401).send({
errorMessage: "이미 로그인이 되어 있습니다."
});
}
};
하지만, 완전한 코드는 아니다. 테스트 해봐야 한다.
간단하게 post버튼 만든 뒤, 테스트 해볼 예정.
localStrorage에 저장되는지도 확인해봐야 한다.
📄 main.html
function logout() {
$.removeCookie("token", { path: "/" });
localStorage.clear();
}
logout할 경우, localStorage를 지워주는 코드도 추가해줘야 할듯하다.
'JavaScript' 카테고리의 다른 글
Node.js 3차 미니프로젝트 middleware, local Storage (0) | 2023.01.03 |
---|---|
Node.js 3차 미니프로젝트 ejs html적용 (0) | 2023.01.03 |
Node.js 3차 미니프로젝트 로그인 & 로그아웃 (0) | 2023.01.02 |
3차 미니프로젝트_회원가입 (0) | 2022.12.30 |
Node.js 심화 1주차_5_Integration Test (0) | 2022.12.29 |