사용자의 입력은 믿을 수 없는 정보이다.사용자 입력에서 발생할 수 있는 예외 케이스를 고민해야 한다. 그리고 예외 케이스에 대한 검증이 필요하다.ex) 이메일 입력창에 특수 문자를 입력할 수 있다. null을 대하는 자세→ 항상 NPE를 방지하는 방향으로 경각심을 가지고 코드를 작성한다.→ return null을 자제한다. NPE 발생 여지를 만든다.→ 대안책으로 Optional이 있다. Optional에 대하여→ Optional은 비싼 객체다. 꼭 필요한 상황에서만 반환 타입으로만 사용한다. 반환 타입이 아닌 파라미터로 받지 말자.→ Optional은 분기 케이스가 존재한다.Optional 자체가 null인지Optional에 담긴 데이터가 null인지따라서 파라미터로 Optional을 받아서는 안 된다..
문제 시나리오CorsConfig 클래스에 작성된 domain 필드가 존재한다.@Value 애너테이션을 사용하여 application.yml에 작성한 값을 domain 필드에 주입한다.application.yml... 생략server: domain: ${SERVER_DOMAIN}CorsConfig@Configurationpublic class CorsConfig { @Value("${server.domain}") static String domain; public static CorsConfigurationSource corsConfiguration() { CorsConfiguration configuration = new CorsConfiguration(); ..
1. 오류 발생 흐름1-1. 사용자가 로그인을 한다.로그인이 완료된 사용자의 인증 정보가 SecurityContext에 저장된다.1-2. 인증된 사용자가 HTTP 요청을 한다.인증이 완료된 사용자는 페이지를 이동하면서 HTTP 요청을 보낸다. 게시물 작성 페이지로 이동하기 위해서는 인증이 완료된 사용자이어야 하며, 더불어 작성 완료하기 위해서 또한 인증이 완료된 사용자이어야 한다.1-3. HTTP 요청 시에 인증된 사용자 정보를 가져올 수 없다.사용자가 게시물 작성 버튼을 누르면 인증 정보를 가져올 수 없다는 에러가 발생한다.아래 코드를 보면 createPost()의 매개변수에 @AuthenticationPrincipal 애너테이션을 사용하여 인증된 사용자 정보를 주입받고자 한다. 그러나 HTTP 요청이..