[JWT] JWT 검증 및 미들웨어

서주·2023년 9월 20일
post-thumbnail

들어오는 모든 요청마다 jwt 검증을 해볼 것이다.

Express

verifyToken.js

const jwt = require('jsonwebtoken');

const verifyToken = (req, res, next) => {
    const token = req.headers['authorization']; // 토큰을 헤더에서 가져옵니다.
    if (!token) {
        return res.status(403).send({ message: '토큰이 제공되지 않았습니다.' });
    }

    jwt.verify(token, SECRET_KEY, (err, decoded) => {
        if (err) {
            console.log(err);
            return res.status(401).send({ message: '토큰이 유효하지 않습니다.' });
        }
        req.user = decoded; // 토큰이 유효하면 decoded 정보를 req.user에 저장합니다.
        console.log("AccessToken 유효")
        next(); // 다음 미들웨어 혹은 라우터 핸들러로 넘어갑니다.
    });
};

module.exports = verifyToken;

SECRET_KEY는 사용자에게 보이지 않는 곳에 잘 숨겨줘야 한다.
위 코드는 jwt를 검증하는 미들웨어로서의 veryftToken.js이다.
미들웨어를 사용하면 response와 request 사이에 특정한 작업을 수행할 수 있으며, next()를 이용해 다음 미들웨어로 넘어갈 수 있다.

app.js에 다음과 같이 추가한다.

var boardRouter = require('./routes/board/board_list'); //board_list.js에 연결
var verifyToken = require('./middlewares/verifyToken'); //verityToken.js에 연결

app.use('/api/board', verifyToken);
app.use('/api/board', boardRouter);

app.use('/api/board', verifyToken); <= 얘를 먼저 쓴다.
/api/board에 들어오는 모든 요청에 대해 verifyToken을 통해 jwt를 검증하게 하였다.

0개의 댓글