From f30c8423387fa8f78d8664f06195b06f7dda5e31 Mon Sep 17 00:00:00 2001 From: ajeong Date: Tue, 24 Dec 2024 22:10:55 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20cors=20=EC=B6=94=EA=B0=80=20#149?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../welletServer/config/CorsMvcConfig.java | 17 ++++++++++++++++ .../controller/KakaoLoginController.java | 20 ++++++++++++------- 2 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 src/main/java/WELLET/welletServer/config/CorsMvcConfig.java diff --git a/src/main/java/WELLET/welletServer/config/CorsMvcConfig.java b/src/main/java/WELLET/welletServer/config/CorsMvcConfig.java new file mode 100644 index 0000000..7d7ee2f --- /dev/null +++ b/src/main/java/WELLET/welletServer/config/CorsMvcConfig.java @@ -0,0 +1,17 @@ +package WELLET.welletServer.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class CorsMvcConfig implements WebMvcConfigurer { + + @Override + public void addCorsMappings(CorsRegistry corsRegistry) { + + corsRegistry.addMapping("/**") + .exposedHeaders("Set-Cookie") + .allowedOrigins("https://wellet.netlify.app");// 프론트 서버 주소 + } +} diff --git a/src/main/java/WELLET/welletServer/kakaologin/controller/KakaoLoginController.java b/src/main/java/WELLET/welletServer/kakaologin/controller/KakaoLoginController.java index ba99e99..45ac12c 100644 --- a/src/main/java/WELLET/welletServer/kakaologin/controller/KakaoLoginController.java +++ b/src/main/java/WELLET/welletServer/kakaologin/controller/KakaoLoginController.java @@ -13,7 +13,9 @@ import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseCookie; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -37,7 +39,7 @@ public class KakaoLoginController { @GetMapping("/callback") - public ResponseEntity callback(@RequestParam("code") String code, HttpServletResponse response) throws IOException { + public String callback(@RequestParam("code") String code, HttpServletResponse response) throws IOException { try { // 1. 카카오에서 accessToken 받아오기 String accessToken = kakaoService.getAccessTokenFromKakao(code); @@ -59,21 +61,25 @@ public ResponseEntity callback(@RequestParam("code") String code, HttpServlet // 4. JWT 생성 String jwtToken = jwtService.generateToken(member); // 생성된 또는 업데이트된 사용자로 JWT 생성 - - // 5. 쿠키에 JWT 저장 +// +// // 5. 쿠키에 JWT 저장 Cookie jwtCookie = new Cookie("jwtToken", jwtToken); jwtCookie.setHttpOnly(true); // JavaScript로 쿠키에 접근 불가 -// jwtCookie.setSecure(true); // HTTPS에서만 전송 + jwtCookie.setSecure(true); // HTTPS에서만 전송 jwtCookie.setMaxAge(60 * 60 * 24); // 쿠키 유효 시간 설정 jwtCookie.setPath("/"); // 쿠키를 모든 경로에 적용 + + jwtCookie.setDomain("wellet.netlify.app"); response.addCookie(jwtCookie); - // 6. 성공적으로 로그인 완료 시 OK 응답 - return ResponseEntity.ok("로그인 성공"); + // 리다이렉트 URL 설정 + String redirectUrl = "https://wellet.netlify.app"; // 원하는 프론트엔드 URL + response.sendRedirect(redirectUrl); + return "로그인 성공"; } catch (Exception e) { log.error("로그인 처리 중 오류 발생", e); - return new ResponseEntity<>("로그인 처리 중 오류", HttpStatus.INTERNAL_SERVER_ERROR); + return "로그인 처리 중 오류" + HttpStatus.INTERNAL_SERVER_ERROR; } } }