티스토리 뷰
프로젝트/모임모임
[모임 플랫폼 서비스 개발] 백엔드(Node.js) - 사용자 권한(Authorization) 관련 미들웨어 구현
dv_jamie 2022. 5. 26. 21:43middlewares/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;
- 다른 파일에서 미들웨어로 사용할 수 있도록 모듈화했다.
'프로젝트 > 모임모임' 카테고리의 다른 글
| [모임 플랫폼 서비스 개발] 백엔드(Node.js) - 모임별 디테일 페이지 불러오기 (0) | 2022.05.27 |
|---|---|
| [모임 플랫폼 서비스 개발] 백엔드(Node.js) - 모임 불러오기 (0) | 2022.05.26 |
| [모임 플랫폼 서비스 개발] 백엔드(Node.js) - 로그인 기능 구현 (0) | 2022.05.26 |
| [모임 플랫폼 서비스 개발] 백엔드(Node.js) - 회원가입 기능 구현 (0) | 2022.05.26 |
| [모임 플랫폼 서비스 개발] 백엔드(Node.js) - 폴더 생성, 분류 (0) | 2022.05.26 |
댓글
