Back End
-
[Spring Security] CSRF 에서 출발한 여행기 (CSRF 토큰만들기)(Feat. Spring & React)Back End/Spring Security 2021. 12. 3. 19:55
CSRF 관련 최신포스팅 바로가기 이 글은 CSRF 공격방식에 대한 글을 읽고, 이에 대한 방어 수단으로 쿠키를 만든다길래 직접 해보고 싶어 이리저리 삽질한 비전공자의 여행일기입니다. (+ 학생 때 시도한 뻘짓 기록 일기입니다. CSRF 적용관련 정보가 필요하시다면 최신포스팅을 읽어주세요!) # 한국인은 결론 먼저 ..! 결론부터 말씀드리자면, Spring Security 는 default로 헤더에 Cache-Control 를 추가하고, no-cashe, no-store 등의 옵션을 추가 합니다. 이는 브라우저에게 '응 쿠키 못써' 라고 알려주는 역할을 합니다. 그러니까 쿠키를 사용하려면 Cache-Control 라는 헤더를 없애주어야 합니다. 그리고, 쿠키를 쓰는 방식은 보안에 취약하여 이제는 쿠키 없..
-
[Spring] No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based CreatorBack End/Spring Boot 2021. 12. 2. 15:40
# 에러원인 'jackson' library 가 empty constructor 가 없고, 파라미터가 있는 constructor 가 있을 때 어떻게 Json 모델을 생성해야되는지 몰라서 발생하는 문제 # 해결방법 (이 중에 아무거나 한개의 방법을 사용) Json 으로 취급할 필드가 무엇인지 알려준다 (@JsonProperty 사용) 또는 NoArgsConstructor 를 만들어준다 * 두가지 방법 모두 성능차이는 그다지 없다.
-
[Spring] RESTful API 설계 가이드Back End/Spring Boot 2021. 12. 1. 14:16
서버 개발자는 Over-Fetching 과 Under-Fetching 을 신경쓰며 API 를 디자인 해야한다. REST API 디자인 시 필요한 정보들을 잘 정리한 블로그 포스팅들을 공유한다. # 예시 (QueryString & PathVariable) /users // Fetch a list of users /users?occupation=programmer // Fetch a list of programmer user /users/123 // Fetch a user who has id 123 /users [GET] // Fetch a list of users /users [POST] // Create new user /users/123 [PUT] // Update user /users/123 [DEL..
-
[Spring JPA] Setter를 사용하지 않는다.Back End/Spring Data JPA 2021. 11. 30. 22:18
# Setter 사용을 지양하는 이유 의도가 무엇인지 파악이 어렵다. (생성인지, 업데이트인지) 객체의 일관성을 유지하기 어렵다. (특정 메서드가 아닌 모든영역에서 접근이 가능하다) # Lombok.config 에서 특정 Annotation 제한하기 lombok.setter.flagUsage=error // @Setter 사용시 컴파일에러 lombok.data.flagUsage=error // @Data 사용시 컴파일에러 # 예시 코드 1. DTO package com.bookmarkmanager.bookmarkmanager.dto; import com.bookmarkmanager.bookmarkmanager.db.entity.User; import lombok.AccessLevel; import lom..
-
[Spring] JUnit API 테스트 코드 작성 (MockMvc)Back End/Spring Boot 2021. 11. 30. 21:14
* MockMvc 는 API 컨트롤러를 테스트하기 위한 도구이다. # 주의사항 MockMvc 를 주입하려면 @AutoConfigureMockMvc 어노테이션이 필요하다. # 회원가입과 로그인 API 를 테스트하기 위한 테스트 코드 @SpringBootTest @Slf4j @AutoConfigureMockMvc public class LoginApiTest { @Autowired private UserRepository userRepository; @Autowired private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; @Test @DisplayName("SignUp & Login Test") public void AccountTes..
-
[Spring] JUnit - unsatisfied dependency mockmvc 에러Back End/Spring Boot 2021. 11. 30. 19:05
# 에러 사항 MockMvc Bean 을 주입 받지 못함 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.bookmarkmanager.bookmarkmanager.main.login.LoginApiTest': Unsatisfied dependency expressed through field 'mockMvc'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.test.web.servlet..
-
[Spring Security] 스프링 시큐리티 개요 (작동방식)Back End/Spring Security 2021. 11. 3. 15:44
# 서블릿 컨테이너 (Servlet Container) 서블릿들의 생명주기를 담당하는 톰캣과 같은 웹 애플리케이션 Client의 Request와 Response 를 처리하기 위해 웹서버와 소켓을 만들어 통신 이러한 웹 애플리케이션(J2EE)은 기본적으로 필터와 서블릿으로 구성되어 있음 모든 Request는 Filter Chain을 반드시 거쳐야만 서블릿 서비스에 도착하게 된다. # 스프링 시큐리티 (Spring Security) FilterChian 사이에 DelegatingFilterProxy 라는 필터를 만들어, 메인필터체인에 끼워넣어 보안을 관리한다. url 패턴에 따라 적용되는 필터체인을 다르게 할 수 있다. # 제공되는 필터의 종류 HeaderWriterFilter CorsFilter Csrf..
-
[Spring JPA] FetchType 이란? (EAGER, LAZY Fetch)Back End/Spring Data JPA 2021. 11. 2. 20:55
# FetchType 연관관계 어노테이션에 설정한다. # FetchType.EAGER 해당 연관관계 필드를 가진 엔티티가 조회될 때, 그 필드도 같이 조회 하여 영속성 컨텍스트에 추가한다. (query 가 추가됨) 예시로는 밑의 코드의 User 를 select 할 때, ShppingList 도 같이 조인되어 select 된다. @Entity @NoArgsConstructor @Data @ToString(callSuper =true) @EqualsAndHashCode(callSuper = true) public class User { @OneToMany(fetch=FetchType.EAGER) List shoppinglists; } # FetchType.LAZY 해당 연관관계 필드를 가진 엔티티가 조회 되..