728x90
반응형
쿠키를 사용한 통신
클라이언트와 통신할 때 필요한 정보를 쿠키에 저장해서 전달하는 경우가 종종 있다. 가장 흔한건 token을 쿠키에 넣어서 클라이언트에게 전달하면, 클라이언트는 이후 요청을 보낼 때 받은 쿠키를 알아서 넣어서 서버에게 전달하게 된다.
나도 refresh token을 쿠키로 전달하기 위해서 서버의 응답에 쿠키 설정을 해주어야 했다.
내가 구현해야 하는 것🧐
나는 silent refresh를 구현하고 싶었기 때문에 요청 헤더에 잇는 refresh token을 가져와서 그 token을 사용해 새로운 refresh token을 발급하고, 새로 발급한 refresh token을 응답 헤더 쿠키에 새로 넣어주는 코드를 구현하려고 한다.
NestJS에서 응답 헤더에 쿠키 적용하기
우선 요청 헤더에 있는 쿠키를 꺼내서 refresh Token을 가져와야한다.
그리고 그 refresh Token을 사용해서 새로운 refresh Token을 발급하고, 응답 헤더에 쿠키를 설정해준다.
@Post('refresh')
async refresh(@Req() request: Request): Promise<{accessToken:string}> {
const refreshToken = request.cookies['refreshToken']; // 요청에서 쿠키 꺼내기
if (!refreshToken) {
throw new UnauthorizedException('Invalid token');
}
const { accessToken, refreshToken: newRefreshToken } = await this.service.getRefreshToken(refreshToken)
//새로 발급한 refresh token 쿠키에 다시 넣어주기
response.cookie('refreshToken', newRefreshToken, { httpOnly: true, sameSite: 'none', secure: true });
return { accessToken };
}728x90
반응형
'이론 공부 > Web' 카테고리의 다른 글
| [Web] Session과 Cookie (2) | 2022.03.26 |
|---|