- passport-jwt의 사용방법을 익혔다. 처음에 강의를 보고만 해서 동작방법을 제대로 익히지 못했었다. 다시 보면서 코드 하나의 의미가 무엇인지 파악하면서 알아냈다.
import authenticateJwt from "./passport";
express.use(authenticateJwt);
import { Strategy, ExtractJwt } from "passport-jwt";
const jwtOptions = {
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: "무작위글자를넣는게좋아요"
}
const verify = (payload, done) => {
try {
if (user
return done(null, user);
}
return done(null, false);
} catch (error) {
return done(error, false);
}
}
export default authenticateJwt = (req, res, next) =>
passport.authenticate("jwt", { session: false }, (error, user) => {
if (user) {
req.user = user;
}
next();
})(req, res, next);
passport.use(new Strategy(jwtOptions, verify));
passport.initialize();
- authenticateJwt가 실행이 되면 passport가 'jwt' 전략 사용한다.
- passport는 'jwt' 전략에서 jwtOptions로 token에 있는 정보를 추출한다.
- 추출한 정보가 verify 함수의 매개변수로 들어간다.
- verify 함수는 payload에 정보가 있으면 매개변수로 done 을 실행하는데 이 done은
passport.authenticate의 세번째 인자다.