TIL 78

220616 TIL

# @GetMapping("/api/board/{id}") public ResponseEntity getBoard(@PathVariable Long id, @AuthenticationPrincipal UserDetailsImpl userDetails) { System.out.println(userDetails.getNickname()); return ResponseEntity.ok().body(boardService.getBoard(id)); } userdetails가 null로 계속 들어온다. 추가 : skip path list 관련 이슈. skip path list 에 와일드카드를 썼기 때문이다. 유저정보를 넘기고 싶다면, GetMapping API를 하나 더 파주는 방법을 쓰던지, 유저가 액티브인지..

TIL 2022.06.17

220615 TIL

# HashMap 과 ResponseEntity https://hyeonic.tistory.com/197 # For each for(Comment comment : comments){ CommentResponseDto commentResponseDto = new CommentResponseDto( comment.getId(), comment.getUser().getNickname(), comment.getComment(), comment.getCreatedAt() ); for문을 줄여서 저렇게 씀 # @Jsonignore DB에 안 올라가게 하는 어노테이션 무한참조에 관련된 어노테이션이다. @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerat..

TIL 2022.06.17

220614 TIL

#StringBuilder 참고 및 출처 : https://onlyfor-me-blog.tistory.com/317 #ResponseEntity 참고 및 출처 : https://devlog-wjdrbs96.tistory.com/182 # AccessDeniedHandler 검색해보기. JwtDecoder 와는 별개로 예외처리 하는 ? 법 #ResponseDto ResponseDto { private T responseData; private String statusCode; private String errorMessage; } private T 에 정보를 담는다? 더 확실히 공부 필요. T는 제네릭이며 어떤 값이든 다 들어갈 수 있다 (String .... 객체.... JSON)

TIL 2022.06.17

220616 미니프로젝트 트러블슈팅 TIL

# build gradle 의존성문제 컴파일온리는 컴파일 할 때만 작동, 빌드시에 jar파일에 포함되지 않았습니다. implementation 'com.auth0:java-jwt:3.13.0' 이게 원래는 compileonly 'com.auth0:java-jwt:3.13.0' 이렇게 되어 있어서 배포가 원활하게 진행되지 않았습니다. # ARC나 postman으로 기능이 잘 구현되었는지 확인해 볼 때, 헤더에 토큰을 넘겨줬음에도 불구하고 horse.latte.exceptionhandler.TokenInvalidException: 유효한 토큰이 아닙니다. 라는 에러가 계속해서 발생했습니다. 토큰이 어떻게 들어오는지 직접 확인해보니 Bearer [토큰값] 이런 식으로 들어오고 있어서, token.substri..

TIL 2022.06.16

220613 TIL

# build gradle 의존성을 잘 체크해보자.. 컴파일온리는 컴파일 할 때만 작동, 빌드시에 jar파일에 포함되지 않는다. implementation 'com.auth0:java-jwt:3.13.0' 이게 원래는 compileonly 'com.auth0:java-jwt:3.13.0' 이렇게 되어 있어서 배포가 안 됐던 것.. # CORS 메서드 https://cordingmonster.tistory.com/100 # 단방향, 양방향 코멘트 조회만 필요하다 -> 단방향 유저가 코멘트를 다 조회하고 싶다 -> 양방향 # http status code 500 서버 에러 400 bad request 401 권한 없는 페이지

TIL 2022.06.14

220612 WIL

CORS는 무엇인가요? 브라우저에서는 보안적인 이유로 cross-origin HTTP 요청들을 제한합니다. 그래서 cross-origin 요청을 하려면 서버의 동의가 필요합니다. 만약 서버가 동의한다면 브라우저에서는 요청을 허락하고, 동의하지 않는다면 브라우저에서 거절합니다. 이러한 허락을 구하고 거절하는 메커니즘을 HTTP-header를 이용해서 가능한데, 이를 CORS(Cross-Origin Resource Sharing)라고 부릅니다. 그래서 브라우저에서 cross-origin 요청을 안전하게 할 수 있도록 하는 메커니즘입니다. cross-origin cross-origin이란 다음 중 한 가지라도 다른 경우를 말합니다. 프로토콜 - http와 https는 프로토콜이 다르다. 도메인 - domain..

TIL 2022.06.12

220606 TIL

#테스트 코드 실행시 lombok builder setter getter 어노테이션 에러가 계속에서 발생 심볼을 찾을 수 없다고 나왔다. implementation 'org.projectlombok:lombok:1.18.22' testAnnotationProcessor('org.projectlombok:lombok') 이 두 개를 그래들에 추가해줬는데, 내가 봤을 땐 아마도 아래 코드가 문제의 이유였던 것 같다. #ARC로 Pathvariable을 넣어주려면 주소를 어떻게 해야할까? 400 Bad Request 에러가 뜨는건 주소 문제가 아니었다.. {id}에는 그냥 해당 id 숫자만 주소에 그대로 넣어주면 되는게 맞는데, POST해야할 타입이 리스트라서 에러가 나는건 아닐까 계속 의심했었는데, 이 부분..

TIL 2022.06.06

220531 TIL

#인터페이스와 클래스 참고 : http://www.tcpschool.com/java/java_polymorphism_interface #Requiredargsconstructer 와 Autowired 왜 굳이 전자의 어노테이션을 쓰는가? 라는 의문이 생겼다. 참고: https://upcake.tistory.com/417 참고 페이지 하단에 참조 탭에도 정보가 있으니 놓치지 말자. #implements 와 extends 차이 extends 부모에서 선언 / 정의를 모두하며 자식은 메소드 / 변수를 그대로 사용할 수 있음 implements (interface 구현) 부모 객체는 선언만 하며 정의(내용)은 자식에서 오버라이딩 (재정의) 해서 사용해야함 abstract extends와 interface 혼합...

TIL 2022.05.31

220530 TIL

#JPA Query Method Repository에 // findBy까지는 규칙, Usernanme은 문법 // select * from user where username = ? 사실상 sql로 이 코드가 실행되는 것 public User findByUsername(String username); #메소드 시큐리티 @EnableGlobalMethodSecurity @EnableGlobalMethodSecurity(jsr250Enabled = true, prePostEnabled = true, securedEnabled = true) - @Secured 와 @RollAllowed 메소드 호출 이전에 권한을 확인한다. 스프링 EL을 사용하지 못한다. - @PreAuthorize 와 @PostAuthori..

TIL 2022.05.30