티스토리 뷰

middlewares/checkAuth.js

const jwt = require('jsonwebtoken');
const jwtSecret = "abcdsfas1234sdefg1234567"

const checkAuth = (req, res, next) => {
    let token = req.headers["authorization"];
    
    // * if문으로 token 존재 여부에 따라 분기
    if(token) {
        const decodedToken = jwt.verify(token, jwtSecret)
        req.user = {
            id: decodedToken.id
        }
        next()
    } else {
        req.user = {
            id: null
        }
        next()
    }
}

// * 모듈화
module.exports = checkAuth;
  • 여기서도 jsonwebtoken 라이브러리가 필요해서 require 했다.
  • 클라이언트에서 서버에 데이터를 요청할 때 헤더에 토큰을 담아 보낼 예정
    → 토큰을 바디에 넣든 어떻게 보내든 상관 없지만, 헤더에 담는 이유는 메인 데이터가 아니기 때문
    → 헤더에 담는 게 필수는 아니지만 관례적으로 그렇게 쓰인다고 한다.

 

* if문으로 token 존재 여부에 따라 분기

if(token) {
	// 토큰 존재
	const decodedToken = jwt.verify(token, jwtSecret)
	req.user = {
		id: decodedToken.id
	}
	next()
} else {
	// 토큰 존재하지 않음
	req.user = {
		id: null
	}
	next()
}
  • 토큰이 존재할 경우에만 jwt.verify를 이용해 유저 id 값(primary key)을 디코딩해 변수에 담는다.
    → req 객체의 user 키(내가 임의로 정한 것)의 값으로 토큰 값을 담는다. 토큰이 없을 경우에는 null 값을 담는다.

 

* 모듈화

module.exports = checkAuth;
  • 다른 파일에서 미들웨어로 사용할 수 있도록 모듈화했다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함