
REST API - Security - Spring Security 웹 시큐리티 Filter 기반 메소드 시큐리티 특정 Method 가 호출됬을때 인증 권한 체크 AOP를 생각 Proxy를 사용하여 권한 체크 둘다 Security Interceptor 를 사용한다. Spring Security Cycle 1 사용자가 요청을 보낸다. GET /api/events 2 Servlet Filter 가 요청을 가로챈다. 3 Security Filter Interceptor 로 요청을 보낸다. Security Filter를 적용 유무 확인 4 SecuriyContextHolder에서 인증 정보 확인 ThreadLocal (한 쓰레드 내의 공유 저장소) 5-1 인증된 사용자가 없음 AuthenticationManag..

REST API - Security - Account 도메인 추가 현재 API는 문제가 존재함 인증 절차가 존재하지 않는다. 이벤트와 연관이있는 Account 를 가지는 사람만 수정 삭제가 가능해야하는데, 현재는 누구자 수정, 삭제가 가능함. Spring Security OAuth2 적용 password 라는 Grant Type 을 사용하여 적용 Account 도메인 필요 Account Account 도메인 id: 식별자 email: 이메일 password: 패스워드 roles: 권한 fetchType 을 EAGER로 설정한 이유 ? 1:N 관계 이기때문에 기본 fetch Type은 Lazy 이다. 하지만 Role의 개수가 적기도하고, 매번 권한이 필요하기 때문에 EAGER Fetch 사용 Account..

REST API - 테스트 코드 리팩토링 테스트 클래스 간의 중복되는 애노테이션과 필드들이 존재한다. 여러 컨트롤러 간의 중복코드 제거하기 상속을 사용하기 @Ignore 중복되는 클래스 EventControllerTest 클래스와, IntexControllerTest 클래스가 중복이 발생한다. Test를위한 애노테이션, MockMvc ... EventControllerTest.java IntexControllerTest.java 상속을 통해 해결 BaseControllerTest 라는 클래스를 만들어 테스트 클래스가 상속받도록 구조를 변경하자. @Ignore 테스트 클래스의 중복을 제거하지만 이는 중복을 제거하기 위한 상위 클래스이지 테스트 클래스가 아니다. 때문에 BaseControllerTest 클래..

REST API - Event Update API 이벤트 수정 API 수정할 이벤트가 없는경우 404 응답 입력 데이터가 잘못된 경우 400 응답 도메인 로직으로 데이터 검증 실패시 400 응답 권한이 충분하지 않는경우 403 응답 정상적으로 수정 한 경우 응답 200 링크 수정한 이벤트 데이터 테스트 코드 작성 4가지 경우의 테스트 코드를 작성 정상적인 수정 입력값이 비어있는 경우 400 응답 입력데이터가 잘못된 경우 400 응답 존재하지않는 이벤트 수정요청시 404 응답 이벤트 수정 API PUT /api/events/{id} 요청 이벤트가 존재하지 않는경우 404 응답 잘못된 데이터가 넘어온경우 400 응답 비지니스 로직상 맞지 않는경우 400 응답 성공적으로 수정이 완료된 경우 200 응답