Spring Security Csrf 설정중 생긴 문제 Csrf 공격 모방을 실제로 하기 힘들어 csrf test 코드 작성중 생긴 문제 perform 메소드 에서 인자로 with(csrf().asHeader().userInvalidToken())을 넘길시 상태 코드가 200으로 넘어오는 문제 ...
Spring Security, CorsConfiguration
User, Role, Auth 아래 참조. 참조 CorsConfigurer cors 공격을 막기 위해 CorsConfigurer 를 구현하여 적용시켜야함. cors가 뭘까? cors http headers를 이용하여 요청을 제한하는것. 요청을 제한하지 않고 모두 허용한다면 copy 사...
one to many(1)
일대다 양방향 연관관계 매핑 Customer : OrderHeader Customer Entity, Customer Dto Customer Entity @Entity @Getter @Table(name = "customer") @NoArgsConstructor(access = Acces...
Custom Method Argument Not Valid Exception
Bean Validation 이용중 request body를 이용하여 요청 파라미터를 검증 할때에 에러 메세지를 field : error message 형태의 json 문자열로 리턴해주기 위한 설정이 필요 했음. 검증 대상이 될 Dto @Getter @Setter @Builder @ToString @NoAr...
아이디 중복 체크와 bean validation
과거에 작성한 코드를 보다 보니 테이블에서 pk에 해당하는 데이터가 존재 하는지 판단해야하는 검증 로직들이 항상 서비스 코드마다 들어가 있음. 예를 들면 아래와 같은 코드들임 @Override public MemberDto getMemberDetail(Long id){ return memberRepository .findById(i...
Service Layer 테스트 코드
서비스 계층 테스트 서비스 계층 테스트가 유용한 이유. 서비스 레이어에서는 직접적으로 Spring 에 접근하여 테스트할 필요 없이 코드의 비지니스 로직만을 테스트 할 수 있게 해야 하기 때문에 @SpringBootTest나 @DataJpaTest 와 같은 테스트 실행시 build 에 시간이 오래 소요되는 작업을 스킵할 ...
Custom Email Validator
@Email 기존 @Email 의 문제 해당 검증기를 구현하고있는 EmailValidator.class안에 isValid 부분에서 if(value == null) return true; 부분이 email이 등록 안되어 있을때에 검증기가 통과됨. 개발중인 서비스에서 사용하려는 @Email은 PK로 작용해야 하기 때문에 커스...
NotEmpty NotBlank NotNull
검증기를 통한 검증을 진행할때 마다 헷갈려서 정리 null empty space @NotNull 허용하지 않음 허용 허용 @NotEmpty 허용하지 않음 허용하...
유저, 역할, 권한 ERD 설계
테이블 설계 user : 유저 테이블 role : 역할 테이블, 관리자, 유저, 방문자 등으로 나눈다. role_auth : 역할에 맞는 권한을 매칭 시키는 다대다 관계를 풀어주는 중간 테이블 auth : 권한 테이블, 권한 목록 저장 user role role_au...
Composite Key Setting
복합키 설정 공통 조건 복합키는 별도의 클래스 Serializable implements EqualsAndHashCode 구현 기본 생성자 클래스의 공개 범위는 public @IdClass Entity에 복합키를 매핑해줄 떄 사용하는 어노테이...