Node.js, Express
Passport-jwt Cookie에 저장된 토큰 값 사용 방법
바삭바삭감튀
2022. 5. 16. 15:48
Passport-jwt에서 지원 해주는 토큰 저장소가 있다.
fromHeader(field_name) = http header
fromBodyField = body
fromUrlQueryParameter = url query
fromAuthHeaderAsBearerToken = bearer
하지만 Cookie에 저장 된 토큰 값을 가져오지 못하는데 이 때
커스텀 함수를 작성하여 토큰 값 을 적용 해줄 수 있다.
1. cookieExtractor 함수에서 저장된 user 토큰값을 추출하고 return
2. jwtFromRequest에 cookieExtractor에서 받은 토큰 값 을 가져와 유저를 확인하고 done함수로 넘겨준다.
passport.ts 일부
const cookieExtractor = function (req: Request) {
let token = null;
if (req && req.cookies) {
token = req.cookies['user'];
}
return token;
};
export const jwtPassport = passport.use(
new JWTStrategy(
{
jwtFromRequest: cookieExtractor,
secretOrKey: jwtSecret,
},
async (payload, done) => {
try {
const user = await User.findOne({ _id: payload._id }).select({
_id: 1,
});
if (user) {
done(null, payload);
} else {
done(null, false);
}
} catch (E: any) {
done(E);
}
},
),
);
app.ts 일부분
app.use(
'/game',
jwtPassport.authenticate('jwt', {
session: false,
failureRedirect: '/login/token-fail',
}),
gameRouter,
);
출처 :
http://www.passportjs.org/packages/passport-jwt/
https://stackoverflow.com/questions/39163413/node-js-passport-jwt-how-to-send-token-in-a-cookie
728x90
반응형