Back/Node.js

Node.js 유저인증 미들웨어

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