passport-jwt

김기태·2021년 10월 7일
0

import passport from "passport";
import { Strategy as JwtStrategy, ExtractJwt } from "passport-jwt";
import "./env";
import { prisma } from "../generated/prisma-client";

// passport-jwt인증에 사용할 옵션
const jwtOptions = {
// header에 bearer스키마에 담겨온 토큰 해석할 것
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
// 해당 복호화 방법사용
secretOrKey: process.env.JWT_SECERT
};

// 인증 성공시 콜백함수
const verifyUser = async (payload, done) => {
console.log("payload", payload);
try {
const user = await prisma.user({ id: payload.id });
// user가 있을 경우
if (user) {
return done(null, user);
} else {
return done(null, false);
}
} catch (error) {
return done(error, false);
}
};

// jwtOptions를 기반으로한 jwt전략으로 인증하고 성공시 verifyUser호출
passport.use(new JwtStrategy(jwtOptions, verifyUser));
passport.initialize();

profile
김개발

0개의 댓글