오늘 공부 중 가장 헤맸었던 jwt을 이용한 로그인 이후, 인증된 유저의 게시글 등록하는 로직을 기록해보려한다.
주제 : JWT를 이용하여 로그인 후 게시글 등록하기
먼저 해당 기능을 구현하기 위해서는
1) 기존에 로그인 성공한 유저에게 토큰이 있어야 했고
2) 동일한 유저의 email, pw, 토큰을 들고 로그인 시도를 해야했다.
3) 이후 토큰의 유효성 검사를 한 후 Posting 기능을 이용할 수 있도록 로직을 짜야 했다.
기존 파일에 이미 1)과 유저의 포스팅 작성기능까지는 구현이 되어있는 상태였기 때문에, 토큰을 위주로 진행했다.
우선 jwt 일치 확인을 위해 새로운 파일을 생성했다.
작성한 내용은 아래와 같은데,
///1///
const jwt = require('jsonwebtoken');
const KEY = process.env.SECRETKEY;
///2///
const validateToken = async (req, res, next) => {
try{
const inputToken = req.headers.token;
const decoded = await jwt.verify(inputToken, KEY);
next();
}
///3///
catch(err){
return res.status(400).json({ message: "Invalid Token" });
}
}
///4///
module.exports = {validateToken}
라우터 파일에 지정한 next함수는 아래와 같았으므로, 컨트롤러로 이동한다.
router.post('/postup', auth.validateToken , postController.createPost);
이후 controller, dao 단에서는 포스팅작성과 동일하기 때문에
별도로 수정을 진행하지 않았다.
위의 내용까지만 구현해도 통과였지만,
클라이언트가 소지한 토큰이 실제로 해당 유저의 토큰인지 검증이 필요하다고 느꼈다
해당 기능구현은 이번주에 진행해보아야겠다 -!!