관련 프로젝트 Github GitHub - maru-KK/sparta-logistics: MSA 물류 유통・관리 서버MSA 물류 유통・관리 서버. Contribute to maru-KK/sparta-logistics development by creating an account on GitHub.github.com 개요OrderService와 DeliveryService 간의 통신을 Event 기반으로 전환하여 기존 동기 호출에서 발생하는 물리적 의존성을 제거하려고 한다. 현재 주문 생성은 사용자가 호출하는 API로, 응답 시간이 길어질 경우 사용자 편의성이 저하된다. 하지만 DeliveryService는 주문 생성 과정에서 동기 방식으로 호출되며, 여러 서비스와 추가로 동기 통신을 수행해 배송 데이터..
오류 해결기
문제RedisTemplate를 통해 데이터를 저장하기에는 성공했으나, 읽어오는 과정에서 역직렬화에 실패했다.Redis에 저장할dto에 존재하지 않는 필드가 함께 저장되어 역직렬화에 실패한 것인데 이유를 알아보자. Redis에 String 타입의 Json 데이터를 저장했고 직/역직렬화에는 Jackson 2.18.1 라이브러리를 사용했다. Redis에 StringType으로 저정할 Dto는 아래와 같다.@Getter@NoArgsConstructor@AllArgsConstructorpublic class ProductCache implements Serializable { @Serial private static final long serialVersionUID = 1L; private st..
지금은 미니프로젝트를 진행중이기 때문에 프론트서버를 따로 두지 않아서, 백엔드 서버에서 함께 동작시켜야 하는 상황이다. 문제: 크롬과 Postman의 JWT 인증결과가 다름 먼저 로그인을 하면 응답헤더에 JWT를 포함하여 바디와 함께 응답한다. 응답을 받은 클라이언트는 헤더에 JWT를 포함하여 /user로 GET 요청한다. /user 는 토큰의 인증이 있어야 접근할 수 있는 url이다. 브라우저에서 토큰 인증할 때, 로그인 이후 요청 헤더에 JWT 잘 넣어서 들어오고, 인증도 잘 마쳐진 상태이다. 토큰 제대로 들어오고, 인증 처리 완료돼서 Security Context Holder에 UserDetail 정보도 잘 저장된다. 근데 막상 크롬에서 페이지 이동이 잘 되었나 보면 인증이 안됨 ????? post..
심지어 이슈번호 태깅도 잘못 된 것을 깨달았다.... 역시 잠을 안자니 실수를 많이 하게 되는 것 같다 #6번 이슈를 태깅했어야 했는데 다른 이슈를 태깅하여 브랜치를 만들어버렸다. 이미 작업한 브랜치에서 새로운 브랜치를 생성하고 푸쉬하려고 한다. git checkout -b feature/#6-StadiumAndTeam-service-enhancement 푸쉬하고 보니 커밋까지 이슈를 죄다 잘못 붙였다는 것을 깨달았다,,, 한탄스럽다 나자신,, 하나 하나 커밋 로그를 수정해주고 포스 푸쉬를 진행하여 해결하였다. git push -f origin feature/#6-StadiumAndTeam-service-enhancement
깃으로 협업하는 첫 프로젝트를 진행하였다. GitHub - hyunsb/baseball-management-application: Java + MySQL + JDBC + gradle + JUint5 Java + MySQL + JDBC + gradle + JUint5. Contribute to hyunsb/baseball-management-application development by creating an account on GitHub. github.com 협업 전략은 아래와 같다. 개발, 수정, 보완, 오류 해결하고자 하는 내용을 이슈로 등록한다. develop 브랜치를 베이스로 하여 featuer 디렉터리에 이슈번호를 태깅하여 개발 브랜치를 생성한다. 개발종료 후 develop 브랜치로 PR 및 ..
댓글 기능 생성 중 무한참조에 대해 고민하게 되었습니다. DB구조상 Board를 Select하면 Reply도 함께 Eager전략으로 불러오는데, Reply에서 다시 Board를 불러오는 구조로 형성되어 있었습니다. public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Column(nullable = false, length = 100) private String title; @Lob private String content; private int count; @ManyToOne(fetch = FetchType.EAGER) // board (N) : user (1) @JoinColumn(nam..
블로그 프로젝트의 카카오 로그인 기능은 사용자가 처음 카카오 로그인을 진행하면 자동으로 회원가입이 진행됩니다. 이때 개발자가 정해놓은 정적인 유니크 키에 의해 비밀번호가 저장되는데, 이런 로직은 서비스 상 문제가 발생할 수 있습니다. 유니크 키 유출 문제 유니크 키가 유출될 경우, 카카오 로그인을 사용하는 모든 사용자의 계정이 위험해집니다. 유니크 키가 유출된다면, 해당 키를 알고 있는 사용자는 모든 카카오 로그인 사용자의 계정에 로그인할 수 있습니다. 비밀번호 변경 문제 카카오 로그인 사용자가 비밀번호를 수정한 이후에 다시 로그인하면, 블로그 프로젝트 로직상으로는 정상적인 스프링 시큐리티 로그인이 불가능합니다. 이 문제를 해결하려면, 카카오 로그인(OAuth를 이용한 로그인) 사용자가 비밀번호를 변경할..
카카오 로그인 시 DB에 정보가 없으면 회원가입 진행 후 로그인을 진행하는 서비스를 생성하였다. 하지만 회원가입 진행 후 DB에는 정상적으로 데이터가 입력되나 로그인이 정상적으로 작동하지 않는 상황이 발생하였다. String kakaoUsername = kakaoProfile.getKakao_account().getEmail() + "_" + kakaoProfile.getId(); String kakaoEmail = kakaoProfile.getKakao_account().getEmail(); String kakaoPassword = cosKey; User kakaoUser = User.builder() .username(kakaoUsername) .password(kakaoPassword) .email..
스프링시큐리티 환경에서 회원 정보 수정 기능을 구현하던 중 회원 정보 수정을 완료하고 DB에 최신 데이터가 반영되었음에도 회원 정보페이지에 다시 접속하면 수정하기 전의 정보가 출력되는 현상이 발생하였습니다. 변경할 회원 정보를 입력하고 회원정보 수정 버튼을 클릭 시 정상 알림창이 출력되고 DB에도 정상적으로 수정된 정보가 반영된 것을 확인할 수 있습니다. 하지만,, 변경 후 다시 회원 정보를 요청하면 수정하기 전의 정보가 출력되는데 첫 번째 해결 방법 ❌ 이는 현재의 코드가 아래 예시 처럼 스프링 시큐리티 세션의 정보를 #authentication.principal로 가져와 사용자에게 출력하는 구조이기 때문에 일어나는 현상이었습니다. UserName: Password: Email: DB의 데이터가 정상적..