반응형
자동 로그인 구현
로그인 검증용 미들웨어를 조금 수정하여 자동 로그인을 구현했다.
검증이 필요한 요청을 보낼 때마다 해당 미들웨어를 거치는데, 여기에서 토큰을 검증하고 액세스 토큰이 만료가 되어있으면 리프래시 토큰이 살아있는지 체크한다...
if (error.name === 'TokenExpiredError' && refreshToken) {
try {
const decodedRefreshToken = jwt.verify(
refreshToken,
process.env.REFRESH_TOKEN_SECRET_KEY,
);
const newAccessToken = createAccessToken(decodedRefreshToken.id);
res.cookie('accessToken', newAccessToken, { httpOnly: true });
req.user = await prisma.users.findFirst({
where: { userId: decodedRefreshToken.id },
});
return next();
} catch (refreshTokenError) {
// 리프레시 토큰 오류 처리
res.clearCookie('accessToken');
res.clearCookie('refreshToken');
return res.status(401).json({ message: '재로그인이 필요합니다.' });
}
} else {
switch (error.name) {
case 'JsonWebTokenError':
return res.status(401).json({ message: '토큰이 조작되었습니다.' });
default:
return res
.status(401)
.json({ message: error.message ?? '비정상적인 요청입니다.' });
}
}
TokenExpiredError < 가 토큰이 만료되었을 때 발생하는 에러명이다. 이렇게 해서 리프래시 토큰이 만료되기 전까진 자동 로그인을 유지할 수 있따..
반응형
'TIL' 카테고리의 다른 글
Redis에 대해서 (1) | 2024.02.29 |
---|---|
의존성 주입에 대하여 (0) | 2024.02.27 |
JavaScript의 변수 선언과 구조 분해 할당(destructuring assignment) (0) | 2024.02.21 |
전개 연산자를 이용하여 prisma 데이터 등록하기 : 20240201 발췌 (0) | 2024.02.21 |
3계층 아키텍처에서 에러나 로직을 반영하는 기준 (1) | 2024.02.21 |