From f919b9dcef644bfd3ba5a9f674fccdd5c10892f0 Mon Sep 17 00:00:00 2001 From: minahYu Date: Tue, 7 Jan 2025 17:34:10 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20ExpireTokenRepository=EC=97=90=20is?= =?UTF-8?q?Blacklisted()=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/kpring/auth/repository/ExpireTokenRepository.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/auth/src/main/kotlin/kpring/auth/repository/ExpireTokenRepository.kt b/auth/src/main/kotlin/kpring/auth/repository/ExpireTokenRepository.kt index 63b951d4..6e56d1b6 100644 --- a/auth/src/main/kotlin/kpring/auth/repository/ExpireTokenRepository.kt +++ b/auth/src/main/kotlin/kpring/auth/repository/ExpireTokenRepository.kt @@ -18,6 +18,10 @@ class ExpireTokenRepository( .awaitSingle() } + suspend fun isBlacklisted(tokenId: String): Boolean { + return redisTemplate.hasKey(tokenId).awaitSingle() + } + suspend fun expireToken( tokenId: String, expiredAt: LocalDateTime, From 993be4fb38b78784431547efa85e6eecce9bb2a8 Mon Sep 17 00:00:00 2001 From: minahYu Date: Tue, 7 Jan 2025 17:34:40 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20TokenService=EC=97=90=20isBlacklist?= =?UTF-8?q?ed()=20=ED=98=B8=EC=B6=9C=20=EB=B0=8F=20=EC=98=88=EC=99=B8?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- auth/src/main/kotlin/kpring/auth/service/TokenService.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/auth/src/main/kotlin/kpring/auth/service/TokenService.kt b/auth/src/main/kotlin/kpring/auth/service/TokenService.kt index ba79095a..66c47501 100644 --- a/auth/src/main/kotlin/kpring/auth/service/TokenService.kt +++ b/auth/src/main/kotlin/kpring/auth/service/TokenService.kt @@ -89,6 +89,9 @@ class TokenService( val isExpired = !tokenRepository.isExpired(token) if (!isExpired) throw ServiceException(AuthErrorCode.TOKEN_EXPIRED) + val isBlacklisted = tokenRepository.isBlacklisted(jwt.id) + if (isBlacklisted) throw ServiceException(AuthErrorCode.TOKEN_EXPIRED) + return TokenInfo(jwt.type, jwt.userId) } } From 5c2ea6577cd4742c17fd416f99a5c3ed2d98036d Mon Sep 17 00:00:00 2001 From: minahYu Date: Tue, 7 Jan 2025 17:35:47 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20logout=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=EC=9D=84=20=EC=9C=84=ED=95=B4=20LoginService?= =?UTF-8?q?=EC=97=90=20deleteToken()=EB=A9=94=EC=84=9C=EB=93=9C=20?= =?UTF-8?q?=ED=98=B8=EC=B6=9C=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- user/src/main/kotlin/kpring/user/service/LoginServiceImpl.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/user/src/main/kotlin/kpring/user/service/LoginServiceImpl.kt b/user/src/main/kotlin/kpring/user/service/LoginServiceImpl.kt index a761e001..14e6a523 100644 --- a/user/src/main/kotlin/kpring/user/service/LoginServiceImpl.kt +++ b/user/src/main/kotlin/kpring/user/service/LoginServiceImpl.kt @@ -31,7 +31,8 @@ class LoginServiceImpl( } override fun logout(request: LogoutRequest) { - TODO("Not yet implemented") + authClient.deleteToken(request.accessToken) + authClient.deleteToken(request.refreshToken) } fun handleTokenResponse(tokenResponse: ResponseEntity): LoginResponse {