이건 spearphishing 과 동시에 진행된 opensource 프로젝트임
editor 환경이라 FE가 좀 눈에 보이는 프로젝트임.
하지만 be도 초반에 업무 지시 받은대로, 클론코딩이니 보고 작동하는대로 기능구현하면되고,( FE는 초반부터 deploy 성공하여 public ip로 배포하던 상황)
또한 멘토링하면서 가이드 받은대로 업그레이드도 도전 가능했음
최소한의 레벨
의 일이라도 제대로 했어야 하지 않았을까.결국 내가 코드 수정함
Client 에서 proxy 설정하면 개발환경 localhost:3000이여도
동일 출처 정책 우회:
프록시 설정을 사용하면 클라이언트 측 애플리케이션이 동일한 도메인(localhost)에서 API 요청을 보내는 것처럼 작동합니다. 브라우저는 이를 동일 출처로 간주하여 CORS 제한을 적용하지 않습니다.
서버 측 요청:
프록시 서버가 실제로 백엔드 서버로 요청을 전달합니다. 서버 간 통신에는 CORS 정책이 적용되지 않기 때문에 CORS 오류가 발생하지 않습니다.
요청 변환:
프록시 서버는 클라이언트의 요청을 받아 백엔드 서버로 전달할 때 필요한 헤더를 추가하거나 수정할 수 있습니다. 이를 통해 CORS 관련 헤더를 자동으로 처리할 수 있습니다.
개발 환경 최적화:
Create React App과 같은 도구에서 제공하는 프록시 설정은 개발 환경에서 API 요청을 쉽게 처리할 수 있도록 최적화되어 있습니다.
이래도 계속 프론트 문제라할래? 넌 30살 먹고 니가 싼 똥도 못 치우냐
{"message": "JWT expired 14513238 milliseconds ago at 2024-10-08T07:55:26.000Z. Current time: 2024-10-08T11:57:19.238Z. Allowed clock skew: 0 milliseconds."}
놀랍게도... refresh token을 안만드셨다 우리의 위대한 BE님은
진짜 공짜 지원금 타먹으려고 여기 들어 온건가?
일단 기존에 들어오는 JWT token expire 제한 건은 백엔드에서 처리를 못함으로.
결국 JWT 토큰값 때문에 그런것 같아서
로직: JWT 토큰 대신 쿠키 기반 인증을 사용하도록 수정합니다.
이젠 ReDirect 가 안됨
naver Oauth까지는 java 코드 다 뜯어보고, Naver 개발자 센터 가서 endpoint 다 넣어가며 test 해서 통과됨
근데 왜 java 통신은 안 되죠..?
package com.jafar.api.domain.member.controller;
import com.jafar.api.oauth2.dto.CustomOAuth2User;
import com.jafar.api.oauth2.dto.UserDto;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("")
public class MemberController {
@GetMapping("/user-info")
public ResponseEntity<UserDto> getUserInfo(@AuthenticationPrincipal CustomOAuth2User customOAuth2User) {
if (customOAuth2User == null) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
}
UserDto userDto = new UserDto();
userDto.setEmail(customOAuth2User.getName());
userDto.setRole(customOAuth2User.getAuthorities().iterator().next().getAuthority());
return ResponseEntity.ok(userDto);
}
}
- 일 마무리는 제대로 합시다 진짜..
과연 남의 글을 읽어본 적은 있는가 수준으로 처참했다...하