Node.js 유저인증 미들웨어
const jwt = require("jsonwebtoken");
const User = require("../schemas/user");
module.exports = (req, res, next) => {
const { authorization } = req.headers;
const [authType, authToken] = (authorization || "").split(" ");
if (!authToken || authType !== "Bearer") {
res.status(401).send({
errorMessage: "로그인 후 이용 가능한 기능입니다.",
});
return;
}
try {
const { userId } = jwt.verify(authToken, "my-key");
User.findById(userId).then((user) => {
res.locals.user = user;
next();
});
} catch (err) {
res.status(401).send({
errorMessage: "로그인 후 이용 가능한 기능입니다.",
});
}
};
authorization 을 헤더에서 받아오고,
split을 통해 Bearer과 토큰을 분리한다.
if문으로 같지 않다면 401에러를 반환한다.
그 후 try catch를 사용해
try엔 verify를 통해 검증하고, 똑같으면 res.loclas.user에 user를 저장하고,
next()로 넘긴다.
여기서 오류가 난다면, err 미들웨어로 넘긴다.
'Back > Node.js' 카테고리의 다른 글
Node.js Mongodb aggregate lookup (0) | 2021.05.12 |
---|---|
Node.js 검색 기능 (0) | 2021.05.11 |
Node.js passport 이용한 구글 로그인 (0) | 2021.04.11 |
Node.js 친구가 쓴 글만 내려주기 [MongoDB] (0) | 2021.04.08 |
Node.js 좋아요, MongoDB (0) | 2021.04.08 |