Passport-jwt Cookie에 저장된 토큰 값 사용 방법
2022. 5. 16. 15:48ㆍNode.js, Express
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
반응형
'Node.js, Express' 카테고리의 다른 글
express 유효성 검사 방법 [ express-validator ] (0) | 2022.05.23 |
---|---|
JS 음수에서 양수 변환 방법 Math().abs() (0) | 2022.05.17 |
ES5 | ES6 import/export, CommonJs require 방법 (0) | 2021.08.30 |
Socket.io Node에서 하는 방법 (연결 시 이벤트) (0) | 2021.08.26 |
failed to parse private key 오류 해결 (firebases .env파일) dotenv (0) | 2021.08.18 |