TIL

· TIL
이번 배달 어플 API 팀 프로젝트를 하면서 고민했던게 가게나 메뉴, 주문등이 삭제되면 고아객체를 어떻게 관리할 것인가? 였다. 강의에서 Cascade와 OrphanRemoval를 배워서 고아객체에 대한 개념을 알기 때문에 이 부분에 대해서 논의를 해봤다. 논의 실제 서비스를 한다고 가정했을때, 메뉴가 삭제되거나, 가게가 삭제된다고 해서 주문과 리뷰등이 사라진다면 어떤 문제가 일어날까? 사업자가 정산을 받거나, 추후에 세금 계산 할 때 누락이 되는 등 갖가지 문제가 일어날 수 있다. 이런 문제를 어떻게 해결할까? 간단한 해결법 엔티티에 Boolean 타입으로 isDeleted 필드를 추가해주었다. 이렇게 하면 위에서 논의한 문제들을 간단하게 해결할 수 있다 조회를 할 때도 isDeleted true만 제..
· TIL
문제 정의사실 수집유저 회원가입 테스트 중 getWriter() has already been called for this response 출력 ExceptionHandeler에서 문제가 났다고 하길래, Exception을 안 내면 되겠다고 생각했다. Exception을 안 내도 getWriter() has already 오류가 발생했다 원인 추론response를 반환해야하는데, 이미 getWriter() 가 쓰였기 때문에 안 된다는 의미 같았다. @RequiredArgsConstructor public class JwtAuthorizationFilter extends OncePerRequestFilter { private final JwtUtil jwtUtil; private final ObjectMa..
· TIL
Access Token Access Token이 탈취를 당하면 큰 일이 난다. 그래서 이걸 방지하려고 AccessToken의 만료기한을 짧게 설정하는데, 이러면 사용자 경험이 나빠지게 된다. 계속 로그인을 해야하니까! 그래서 이 해결법으로 나온 게 Refresh Token이다 Refresh Token Refresh Token은 Access Token 이 만료 됐을 때 Access Token 을 재발급 해주기 위해서 사용한다 프로세스 기본적인 개념은 아래와 같다 Access Token 만료기한이 짧다 Refresh Token 만료기한이 길다 평소 API 통신에서는 Access Token을 사용하고, Refresh Token은 Access Token이 만료되어 갱신 될 때 사용한다. Refresh Token..
· TIL
오늘 팀 프로젝트간에 일어났던 문제다 jwt와 security를 정확히 잘 파악하지 못해서 팀 프로젝트에서 내가 인증 인가, 및 유저 도메인을 맡기로했다 그런데 역시나 문제가 발생했다 로그인을 하는데 unsuccessfulAuthentication로 계속 빠지는 것이다. 그래서 디버깅을 해봤는데 AccountStatus??? 분명 이런 걸 관리하는 곳이 있었는데 @Getter @RequiredArgsConstructor public class UserDetailsImpl implements UserDetails { private final User user; @Override public Collection
· TIL
@DataJpaTest @DisplayName("User Entity JPA 테스트") class UserTest { @Autowired private TestEntityManager entityManager; PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); @Test @DisplayName("유저 저장 시 아이디, 비밀번호, role이 일치해야 한다 / 비밀번호는 Encode 해서 저장") void 유저_저장_성공() { // Given String username = "username"; String rawPassword = "password"; String encodedPassword = passwordEncoder.encode(raw..
· TIL
@Test @DisplayName("댓글 수정 테스트") void 댓글_수정_테스트() throws Exception { //given mockUserSetup(); String content = "수정댓글"; Long commentId = 1L; CommentRequestDto requestDto = new CommentRequestDto(); requestDto.setContent(content); String requestJson = objectMapper.writeValueAsString(requestDto); CommentResponseDto responseDto = new CommentResponseDto(); responseDto.setAuthor("username"); responseDto..
wonow_
'TIL' 카테고리의 글 목록 (12 Page)