From b2ce4d158fc478369e631de00c4c56b10d763a83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B8=EC=A4=80?= <74056843+sejoon00@users.noreply.github.com> Date: Tue, 11 Feb 2025 01:37:04 +0900 Subject: [PATCH] =?UTF-8?q?[fix/#44]=20jwt=20=EC=A0=84=EB=8B=AC=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20cors=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/EmailPasswordSuccessHandler.java | 19 +++++++++++++++---- src/main/resources/application.yml | 2 ++ .../auth/controller/AuthControllerTest.java | 10 +++++----- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/moplus/moplus_server/global/security/handler/EmailPasswordSuccessHandler.java b/src/main/java/com/moplus/moplus_server/global/security/handler/EmailPasswordSuccessHandler.java index 9fe78fc..f5ebad6 100644 --- a/src/main/java/com/moplus/moplus_server/global/security/handler/EmailPasswordSuccessHandler.java +++ b/src/main/java/com/moplus/moplus_server/global/security/handler/EmailPasswordSuccessHandler.java @@ -1,10 +1,13 @@ package com.moplus.moplus_server.global.security.handler; +import com.fasterxml.jackson.databind.ObjectMapper; import com.moplus.moplus_server.domain.member.domain.Member; -import com.moplus.moplus_server.global.security.AuthConstants; import com.moplus.moplus_server.global.security.utils.JwtUtil; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import lombok.RequiredArgsConstructor; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler; @@ -15,15 +18,23 @@ public class EmailPasswordSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler { private final JwtUtil jwtUtil; + private final ObjectMapper objectMapper = new ObjectMapper(); // JSON 변환을 위한 ObjectMapper @Override public void onAuthenticationSuccess(final HttpServletRequest request, final HttpServletResponse response, - final Authentication authentication) { + final Authentication authentication) throws IOException { Member member = (Member) authentication.getPrincipal(); String accessToken = jwtUtil.generateAccessToken(member); String refreshToken = jwtUtil.generateRefreshToken(member); - response.addHeader(AuthConstants.AUTH_HEADER, AuthConstants.TOKEN_TYPE + " " + accessToken); - response.addHeader(AuthConstants.REFRESH_TOKEN_HEADER, AuthConstants.TOKEN_TYPE + " " + refreshToken); + + // JSON 응답 생성 + Map tokenResponse = new HashMap<>(); + tokenResponse.put("accessToken", accessToken); + tokenResponse.put("refreshToken", refreshToken); + + response.setContentType("application/json"); + response.setCharacterEncoding("UTF-8"); + response.getWriter().write(objectMapper.writeValueAsString(tokenResponse)); } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 3e3b140..6e09489 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -17,6 +17,8 @@ cors-allowed-origins: http://dev.mopl.kr, https://prod.mopl.kr, http://prod.mopl.kr, + http://localhost:3000, + http://localhost:5173, https://www.mopl.kr, http://www.mopl.kr \ No newline at end of file diff --git a/src/test/java/com/moplus/moplus_server/domain/auth/controller/AuthControllerTest.java b/src/test/java/com/moplus/moplus_server/domain/auth/controller/AuthControllerTest.java index 95ee4e7..4d87cb3 100644 --- a/src/test/java/com/moplus/moplus_server/domain/auth/controller/AuthControllerTest.java +++ b/src/test/java/com/moplus/moplus_server/domain/auth/controller/AuthControllerTest.java @@ -1,7 +1,7 @@ package com.moplus.moplus_server.domain.auth.controller; import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import com.fasterxml.jackson.databind.ObjectMapper; @@ -56,12 +56,12 @@ class 어드민_로그인 { mockMvc.perform(MockMvcRequestBuilders.post("/api/v1/auth/admin/login") .contentType("application/json") .content(requestBody)) - .andExpect(status().isOk()) // 200 응답 확인 - .andExpect(header().exists("Authorization")) - .andExpect(header().exists("RefreshToken")); - + .andExpect(status().isOk()) // HTTP 200 응답 확인 + .andExpect(jsonPath("$.accessToken").isNotEmpty()) // accessToken 필드 존재 여부 확인 + .andExpect(jsonPath("$.refreshToken").isNotEmpty()); // refreshToken 필드 존재 여부 확인 } + @Test void 잘못된_요청_본문() throws Exception {