no image
메신저 서비스 프로젝트 ERD, API 설계
ERD drawio 링크 API spring cloud를 사용해 MSA로 설계해보고자 한다. MVP 목표는 다음과 같다. ERD 설계가 동작하는 API Message(text), 음성 서비스 파일 전송, 기본 Message(text)검색
2023.07.31
no image
spring data JPA - slice, page (무한 스크롤, 페이지네이션)
Spring Data JPA 페이징페이지를 구현한다면 두 가지 경우를 생각해 볼 수 있다. 스크롤이 끝에 다다르면 추가 요청으로 정보를 불러오는 무한 스크롤과 페이지 전환으로 다음 정보를 보여주는 페이지네이션이다. 둘 다 sql의 limit, offset을 잘 활용하면 구현할 수 있어 보인다. 하지만 spring data jpa에서 편리한 인터페이스를 제공한다. query method에 Pageable을 인자로 주면 return으로 Slice, Page, List 등의 타입을 받을 수 있다.public interface S3ImageRepository extends JpaRepository { // 단순 페이징 (repository에 작성 안해도 됨) Slice findAll(Pageable ..
2023.07.27
no image
Spring Security 예외처리( AuthenticationEntryPoint, AccessDeniedHandler, unsuccessfulAuthentication )
관련 포스트 2023.07.13 - [Spring/Security] - 스프링) Spring Security Authentication/Authorization (23-06-29) 스프링) Spring Security Authentication/Authorization (23-06-29) velog에서 이전한 글 입니다. Filter Spring의 life cycle이다. Security Spring Security도 많은 filter로 구성 돼있다. Security의 목적은 controller에서 인증/인가를 분리하고 filter단에서 손쉽게 처리하기 위함이다. cornpip.tistory.com Spring Security 예외처리 현재 구성한 인증/인가 흐름이다. 프론트에서 error msg를 요청..
2023.07.26
no image
OAuth2 를 알아보자
프로토콜이란? 시스템 사이에서 데이터를 주고 받는 양식과 규칙의 체계이고 OAuth(Open Authorization)는 접근 위임을 위한 프로토콜의 일종이다. 내 서버 입장에서는 Third-Party Application을 통해 내 서버에 대해 접근을 위임하는 것이고 Third-Party Application 입장에서는 리소스 소유자를 대신해 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 것이다. OAuth2를 구성하는 4가지 역할 Resource Onwer : 사용자 Client : 나의 Application (나의 Application에서 서버와 클라이언트 둘 다 의미한다.) Authorization Server : 인증/인가를 수행하는 서버로 사용자는 Authorization Serv..
2023.07.25
no image
Spring boot DI 주입 방식 (필드/수정자/생성자)
3가지 주입 방식이 있다. 필드 주입 @Service public class TestService2 { @Autowired private TestService3 testService3; ... } 필드 주입을 하면 순환 참조를 잡아내지 못한다는 글이 있다. 확인해보자. @Service public class TestService2 { @Autowired private TestService3 testService3; ... } @Service public class TestService3 { @Autowired private TestService2 testService2; ... } 위와 같은 코드로 run을 하면 다음과 같이 빌드에서 에러를 발견할 수 있다. 예전 버전의 spring boot에선 잡아내지..
2023.07.22
no image
쿠키(cookie), 서버 <-> 클라이언트 set-cookie 에러 사항들
쿠키는 헤더 영역을 통해서 송수신 된다. 서버에서 응답 headers의 Set-Cookie라는 key에 value로 String을 넘겨주면 쿠키이다. 쿠키 옵션 서버와 클라이언트가 쿠키를 주고받기 위해선 시스템 구성에 따라 옵션들이 필요하다. 예시를 보자. Response Headers에 Set-Cookie를 보면 Authorization 이란 키값에 토큰이 들어있고 세미클론으로 구분되어 옵션들이 넘어왔다. 유효 기간 Max-Age : 쿠키의 유효 시간을 초 단위로 설정한다. Expires : 쿠키가 유효한 날짜를 지정할 수 있다. 유효 기간 옵션에 따라 세션 쿠키( Session Cookie ) : Max-Aag, Expires 옵션이 없는 쿠키이다. 브라우저를 종료하면 삭제된다. 영속성 쿠키( Per..
2023.07.21
Web
no image
Spring Security Cors 에러( WebMvcConfigurer/ corsConfigurationSource )
해당 포스팅을 이해하기 위한 정보 2023.07.20 - [Web] - CORS CORS CORS (Cross-Origin-Resource Sharing) domain name = root name + TLD https://blog.cornpip.store 과 같이 포토를 명시하지 않을 경우 https는 https://blog.cornpip.store:443 과 동일하게 동작하고 http://blog.cornpip.store 은 http://blog.co cornpip.tistory.com 문제의 시작 No content to map due to end-of-input @Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigu..
2023.07.20
no image
CORS
CORS (Cross-Origin-Resource Sharing) domain name = root name + TLD https://blog.cornpip.store 과 같이 포토를 명시하지 않을 경우 https는 https://blog.cornpip.store:443 과 동일하게 동작하고 http://blog.cornpip.store 은 http://blog.cornpip.store:80 과 같게 동작한다. CORS는 Cross-Origin-Resource Sharing 으로 다른 Origin에서 자원을 공유할 때와 관련돼 있다. 그럼 Origin(출처)이란? 호스트 + 포트 번호를 의미한다. ( CORS 의 존재는 기본적으로 브라우저는 Same-Origin Policy 를 권한다고 볼 수 있다. )..
2023.07.20
Web
no image
WIL 4F 회고 - 주특기(spring) 3주차
Weekly I Learned 4F 방법론 Fact, Feeling, Finding, Future Fact 이번 주는 수욜까지는 lv3과제, 목요일은 테스트, 금요일부턴 일주일 백/프론트 프로젝트 시작이 있었다. lv3과제에서는 Post entity와 Comment entity의 연관 관계를 고려하며 Comment CRUD를 맡아서 작성했고 테스트는 RDB와 EC2로 간단한 배포를 진행했다. 일주일 프로젝트는 아이디어 회의 -> 피그마 -> ERD -> API -> 업무분할 순으로 진행하였고 ERD와 API를 최대한 설계/명세하고 업무를 분담했다. Feeling 이번주 테스트에서는 entity가 하나라 연관관계가 없었고 코드는 저번주보다 쉬웠다. 대신 배포가 필수였고 RDB로 mysql을 생성하고 app..
2023.07.17