3월 19일 (토) Access Token / Refresh Token
기존 코드
require('dotenv').config();
const { sign, verify } = require('jsonwebtoken');
module.exports = {
generateAccessToken: (data) => {
return sign(data, process.env.ACCESS_SECRET, { expiresIn: '2d' });
},
sendAccessToken: (res, accessToken) => {
res.json({ data: { accessToken }, message: "ok" });
},
resendAccessToken: (res, accessToken, data) => {
res.json({ data: { accessToken, userInfo: data }, message: "ok" });
},
isAuthorized: (req) => {
const authorization = req.headers["authorization"];
if (!authorization) {
return null;
}
const token = authorization.split(" ")[1];
console.log('token', token)
try {
return verify(token, process.env.ACCESS_SECRET);
} catch (err) {
return null;
}
}
};
쿠키에 토큰 담은 코드
require('dotenv').config();
const { sign, verify } = require('jsonwebtoken');
module.exports = {
generateAccessToken: (data) => {
return sign(data, process.env.ACCESS_SECRET, { expiresIn: '2d' });
},
sendAccessToken: (res, accessToken) => {
console.log('accessToken', accessToken)
return res
.status(200)
.cookie('jwt', accessToken)
.json({ data: { accessToken }, message: 'OK' });
},
isAuthorized: (req) => {
const cookie = req.headers.cookie;
console.log('cookie 🚌', cookie)
if (!cookie) {
return null;
} else {
const token = cookie.split(" ")[0]
// console.log('token 🏀', token)
const tokenSlice = token.slice(4, token.length)
// console.log('tokenSlice 🏀', tokenSlice)
const data = verify(tokenSlice, process.env.ACCESS_SECRET);
// console.log('data 🏀', data)
if (!data) {
return null
} else {
return data;
}
}
}
};
토큰을 쿠키에 담는 과정에서 jwt에 쿠키가 두개 들어가는 현상
require('dotenv').config();
const { sign, verify } = require('jsonwebtoken');
module.exports = {
generateAccessToken: (data) => {
return sign(data, process.env.ACCESS_SECRET, { expiresIn: '2d' });
},
sendAccessToken: (res, accessToken) => {
res.json({ data: { accessToken }, message: "ok" });
},
resendAccessToken: (res, accessToken, data) => {
res.json({ data: { accessToken, userInfo: data }, message: "ok" });
},
isAuthorized: (req) => {
const authorization = req.headers["authorization"];
if (!authorization) {
return null;
}
const token = authorization.split(" ")[1];
console.log('token', token)
try {
return verify(token, process.env.ACCESS_SECRET);
} catch (err) {
return null;
}
}
};
require('dotenv').config();
const { sign, verify } = require('jsonwebtoken');
module.exports = {
generateAccessToken: (data) => {
return sign(data, process.env.ACCESS_SECRET, { expiresIn: '2d' });
},
sendAccessToken: (res, accessToken) => {
console.log('accessToken', accessToken)
return res
.status(200)
.cookie('jwt', accessToken)
.json({ data: { accessToken }, message: 'OK' });
},
isAuthorized: (req) => {
const cookie = req.headers.cookie;
console.log('cookie 🚌', cookie)
if (!cookie) {
return null;
} else {
const token = cookie.split(" ")[0]
// console.log('token 🏀', token)
const tokenSlice = token.slice(4, token.length)
// console.log('tokenSlice 🏀', tokenSlice)
const data = verify(tokenSlice, process.env.ACCESS_SECRET);
// console.log('data 🏀', data)
if (!data) {
return null
} else {
return data;
}
}
}
};
postman에 저장되어있던 쿠키까지 나와서 그렇게 된 것,
postman 초기화 후 재시도 하면 정상 작동한다
Author And Source
이 문제에 관하여(3월 19일 (토) Access Token / Refresh Token), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@southbig89/3월-19일-토-Access-Token-Refresh-Token저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)