TemplateInputException: Error resolving template [/common/fragments/footer], template might not exist or might not be accessible by any of the configured Template Resolvers 예외 해결
·
Spring
1. 문제상황 EC2로 서버를 구동했을 때 예외가 터졌습니다. 로컬에서는 문제 없었는데 말이죠. 그리고 이상하게 특정 url에만 접근하면 위와 같은 예외가 터졌습니다. org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/common/fragments/footer], template might not exist or might not be accessible by any of the configured Template Resolvers (template: "user/home" - line 79, col 11) at org.thymeleaf.engine.TemplateManager.resolveTemplate(Template..
TemplateInputException: Error resolving template, template might not exist or might not be accessible by any of the configured Template Resolvers] 예외 해결
·
Spring
1. 문제상황 분명 로컬에서는 아무런 문제가 없었는데, EC2에 jar를 배포하자 사이트는 먹통이 되었습니다. 위와 같은 예외가 터졌습니다. @GetMapping("/find-id") public String findId(){ return "/login/find-id"; } 컨트롤러에서 뷰 탬플릿 이름을 리턴할 때 슬래쉬('/')를 포함해서 리턴했기 때문에 발생한 예외였습니다. IDE에서 돌릴 때는 상관 없지만, jar로 배포할 때는 문제가 된다고 합니다.
Pageable을 활용해 타임리프로 페이징 처리 구현하기
·
Spring
1. 개요 포스팅에 앞서 이 포스팅은 페이징 처리에 관련해서만 내용을 담았습니다. 들어가기 앞서 용어를 정리해야 할 거 같은데요. 아마 페이징 처리를 한다는 건 위처럼 하는 것을 의미할 겁니다.(더미 데이터라 그러려니 하고 봐주세요) 페이지 그룹 : 페이지들을 모은 상위 카테고리 개념입니다. 페이지 그룹 사이즈만큼 페이지가 생길 것입니다. 위 이미지에서는 페이지 그룹 사이즈를 2로 설정했기 때문에 페이지는 두 개가 나옵니다. 페이지 : 페이지에는 정해둔 페이지 사이즈만큼 컨텐츠가 나올 겁니다. 게시판이면 게시글이, 쇼핑몰이면 상품들이 컨텐츠에 해당하겠습니다. 저는 e-book 서점이므로 도서의 정보가 컨텐츠로 나오는데 만약 페이지 사이즈를 5개로 설정했다면 페이지당 도서의 정보가 5개씩 나와야 합니다. ..
테스트 코드 작성 시 파일 업로드를 하지 않고 MultipartFile 가져오기
·
Spring
파일을 업로드하는 로직들을 모아 유틸 클래스로 만들고, 특정 서비스에서 파일 업로드 유틸 클래스를 참조하여 메소드를 호출할 때 해당 메소드를 테스트하려면 바로 다음과 같은 문제에 직면합니다. 테스트 코드에서는 파일 업로드를 할 수 없는데 유틸 클래스에서 MultipartFile 객체의 의존성이 있는 경우입니다. 이번 포스팅에서는 해당 내용을 다뤄보겠습니다. 1. 코드 코드를 보여드리기 전, 대충 코드의 로직을 설명해드리자면 도서를 등록할 때 thumbnail 이미지를 같이 등록해야 하는데 이때 파일 업로드 클래스를 호출하여 로직을 처리하고 있습니다. 도서 그룹 관리 컨트롤러 @RestController @RequiredArgsConstructor @Slf4j @RequestMapping("/manage/..
[Spring Security] 로그인/로그아웃 구현 및 타임리프 적용
·
Spring Security
1. 개요리엑트와 같은 클라이언트 사이드 렌더링일 경우 JWT 토큰을 사용해 로그인 처리를 했겠지만, 저같은 경우 서버 사이드 렌더링인 타임리프를 사용해 JWT 토큰 사용은 곤란했습니다. 따라서 시큐리티의 세션으로 로그인 로그아웃을 구현했고, formLogin을 사용했습니다.2. 설정 정보전체 설정 코드아래는 SecurityConfig 설정입니다. 저는 스프링 부트 3.1, 스프링 시큐리티 6.1 버전을 사용하고 있습니다.@Configuration@RequiredArgsConstructorpublic class SecurityConfig { private final MemberDetailsService memberDetailsService; private static final int ONE_MONT..
Spring의 HttpMediaTypeNotAcceptableException 예외 해결
·
Spring
1. 개요 스프링으로 프로젝트를 진행하다가 만난 상황입니다. 회원가입 시 이메일이 중복되었는지 확인하기 위해 다음과 같이 코드를 작성했습니다. $.ajax({ type: "post", url: "/register/validate/email", data: { email: email }, success: function (result){ console.log(result); }, error: function (result){ console.log(result); $('.email__result').html(response.message); isValidatedEmail = false; } }); ajax를 통해 유효성 검사하는 코드입니다. @PostMapping("/register/validate/email..
[Spring Security] 인증(Authentication), 인가(Authorization), 권한(Authority), 역할(Role) 알아보기
·
Spring Security
1. 인증과 인가인증은 시스템에 접근하기 위해 회원의 정보를 확인하는 것입니다. 인증은 인가 이전에 완료되며, 보통 회원의 로그인 정보가 필요합니다. 만약 인증이 실패한다면, 클라이언트는 401 UNAUTHORIZED 에러를 응답받습니다.인가란 특정 리소스에 접근하려는 회원의 권한을 확인하는 것입니다. 인가는 항상 인증 이후에 일어나며, 회원의 권한(privilege)이나 역할(role)이 필요합니다. 만약 인가가 실패한다면, 클라이언트는 403 FORBIDDEN 에러를 응답받습니다.정리인증은 인가 전에 완료된다.인증이 실패하면 401 UNAUTHORIZED 에러를 응답받는다.인가는 리소스에 접근하려는 회원의 권한을 확인하는 것이다. 예를 들어 본인이 작성한 게시글이 아닌데 삭제하려고 할 때이다.인가가 ..
[Spring Security] CORS, CSRF란?
·
Spring Security
CORS란?CORS란 “Cross-Origin Resource Sharing”의 약자입니다. CORS는 프로토콜인데, 서로 다른 origin일 시 리소스와 상호 작용하기 위해 클라이언트인 브라우저에서 실행되는 스크립트입니다. 예를 들어 UI 앱에서 서로 다른 도메인인 API를 호출할 시 CORS로 인해 기본적으로 차단됩니다. 이는 대부분의 브라우저에서 구현되는 W3C의 스펙입니다.따라서 CORS는 보안이나 공격과 같은 문제가 아니라 서로 다른 Orgin 간의 데이터 및 통신을 할 때 브라우저에서 이를 중지하기 위해 제공하는 기본 보호 기능입니다.예를 들어 큰 규모의 IT 기업일 경우 백엔드 서버와 프론트엔드 서버의 IP가 서로 다릅니다. 이때 프론트엔드 서버에서 클라이언트가 로그인을 했을 때, 백엔드의 ..
코더 제이콥
'분류 전체보기' 카테고리의 글 목록 (2 Page)