spring boot

    스프링 부트 한무 403 Error

    스프링 부트 한무 403 Error

    배경 백엔드 프론트엔드 각자 열심히 개발을 진행하면서 드디어 프론트쪽 UI작업이 어느정도 끝나고 API 연동 시점에서 계속해서 403 에러가 터지기 시작했다.. 분명 로컬에서 잘 작동을 했고 이미 모든 권한에 관련된 것들은 처리를 해둔 상태인데 도데체 왜??? 문제 에러가 발생한 이유는 되게 간단했다 develop 환경에서 JPA.ddl-auto 설정 값을 none으로 설정을 해뒀더니 개발을 진행하면서 변경된 엔티티 반영이 되지 않아서 SQLSyntaxErrorException 이 발생하게 되었다 그럼 여기서 이해가 되지 않는 점은 예외가 발생하면 아래와 같이 500에러가 터지기를 기대했는데 왠걸? 403????!? 무한 403에러가 나는 것은 바로 시큐리티에서 찾을 수 있었다 AuthorizationF..

    Controller에서 Security 정보 가져오기

    사용자가 크게 멘토와 멘티 두개의 역할 군으로 나뉘어져 있고 두 역할이 하나의 API Endpoint를 공유해서 사용을 하고 있고 하나의 값에 대해서 접근 권한이 다르기 때문에 분기 처리가 필요로 하고 사전에 filter에서 처리된 Role을 가져오고자 한다 Annotation Role을 가져오기 위해서는 SecurityContext에 접근을 해야 하는데 Security에서 제공하는 것으로는 @AuthenticationPrincipal, @CurrentSecurityContext가 있다 @AuthenticationPrincipal SecurityContext에 담겨진 Authentication에서 getPrincipal()을 통해 principal 객체를 반환 @CurrentSecurityContext추..

    첫 팀 프로젝트 후기

    3월 9일부터 시작한 팀프로젝트가 드디어 마무리가 되었다 원래는 6주정도로 생각중이었지만 프론트 한 분 잠수, 기타 이유로 1주일 정도 밀리기는 했지만 그래도 첫 팀프로젝트가 완성이 되어서 만족이지만 몇가지 아쉬운 부분들이 남아있다 팀 프로젝트 후기 "개인이 아닌 함께 하는 것의 즐거움" 항상 개발 공부는 혼자 진행해왔고 누군가의 피드백 또한 받아본 적이 없다 몇번 친구들과 스터디를 진행을 해봤지만 항상 알려주는 역할을 해왔기에 소통이 오간다기 보단 일방적인 정보 전달에만 국한되어왔다 하지만 이번 팀 프로젝트를 하면서 기술적인 문제들, 서로 고민하던 내용들, 부족한 부분을 채워나가면서 즐거움이 생기게 되었다 협업과 소통의 즐거움을 배울 수 있던 시간이었다 "부딪칠 수 있는 자신감" 부끄러운 얘기지만 나는..

    Spring-Rest Docs(2)

    목차 Spring-Rest Docs(1) Spring-Rest Docs(2)

    Spring-Rest Docs(1)

    Spring-Rest Docs(1)

    목차 Spring-Rest Docs(1) IDE내에서도 static/docs 확인 가능 asccidoctor 작업 이후 생성된 HTML 파일을 static/docs 로 copy build 의 의존작업 명시 jar 빌드 전에 doc생성build 폴더 내에서만 확인 가능 (7,8,9 과정 실행시 굳이 안해도 됨) jar안에 static/docs directory로 doc copy Spring 공식 문서를 참조하여 설정했습니다 테스트코드 import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; im..

    Spring boot CORS 설정

    Spring boot CORS 설정

    스프링 부트로 REST API 서버를 만들면 테스트 다돌려보고 마지막으로 postman에서까지 실행이 잘 되는데 프론트쪽에서 실행할 때 에러가 나는 경우가 있었다 이번에 처음 겪어본 에러였는데 SOP를 따르지 않아서 발생하는 문제였다 CORS(Cross-Origin Resource Sharing) 다른 출처의 자원들을 공유하는 것을 의미한다 따라서 CORS를 설정해주지 않거나 제대로 설정하지 않은 경우 원하는대로 자원을 공유하지 못하게 된다 처음에 다른 출처라는 것에 대해서 이해하는데 정확히 어떤 의미인지 어려운 감이 있었다 우선 다른 출처에 대해서 먼저 알고 넘어가겠다 출처(Origin) 출처는 URL의 Protocol Host Port로 구분된다 Protocol : Http, Https, FTP와 같..

    졸작 프로젝트 마무리

    프로젝트를 마무리하면서 부족했던 부분을 정리하고자 한다 처음으로 스프링을 사용해서 처음 부터 끝까지 진행한 프로젝트이고 많은 어려움이 있었지만 완벽하다고는 하지 못하지만 완성을 해냈다 아쉬웠던 점 컨트롤러에서 Entity 노출 JPA를 사용하면서 몇몇 엔티티에 양방향 관계를 맺어 둔 것이 있다 개발을 첫 시작할때만 해도 우선 기능이 돌아가게끔 만들자라는 생각 뿐이었고 뷰에 반환 하는 값에 대해서는 전혀 생각을 하지 않고 있었다 이부분이 화두의 시작이었다 뷰에 반환하는 값에 양방향 관계를 맺은 값이 포함이 되었고 순환참조의 문제가 생기게 되었다 경험해보지 못한 오류상황이었고 꽤 긴시간 골머리를 앓았던 기억이 있다 그 당시에는 DTO를 만들어서 보낼 생각은 하지 않은채 결국 문제만 해결하기 위해 @JsonI..

    Spring MVC2

    메세지 사용이유 다양한 화면에서 하나의 텍스트 메세지를 한 곳에서 관리하고 사용하도록 하기 위해서 사용된다 메세지 설정방법 resources파일 아래에 messages.properties파일을 만들어서 안에 key-value형식으로 값을 설정을 해둔다 메세지 사용방법 @Configuration public class MessageConfigJava { @Bean public MessageSource messageSource(){ ResourceBundleMessageSource message = new ResourceBundleMessageSource(); message.setBasenames("messages", "messages_en"); message.setDefaultEncoding("utf-8"..