시큐리티 설정에서 check-email 을 제거해줬다. check-email 은 permitAll 이 아니라 로그인한 사용자만 접근 가능해야 한다.
인증 이메일 다시 보내기 버튼을 클릭할 시 다음과 같은 화면이 표출된다.
웹 서비스를 다운시키려는 목적으로 이메일을 계속 요청할 수 있다. 그럼 과부하가 생길 수 있다.
public boolean canSendConfirmEmail() {
return this.emailCheckTokenGeneratedAt.isBefore(LocalDateTime.now().minusHours(1));
}
따라서 1시간마다 가능하도록 하게 하였다.
<div class="py-5 text-center" th:if="${error != null}">
error 메시지가 있을 때 보여주는 블럭
<div class="py-5 text-center" th:if="${error == null}">
error 메시지가 없을 때 보여주는 블럭
Q. 리다이렉트를 하는 이유는?
화면 리프레쉬를 할때 마다 이메일이 재전송 되면 안된다. resend-confirm-email이 주소창에 계속 있으면 화면을 리프레쉬 할때 마다 계속 이메일을 보내게 된다. (의도치 않게) 그래서 미연에 방지하기 위해 ~! (get 요청임에도 불구하고)
SingUpForm도 마찬가지 이유 때문에 리다이렉트를 했다.
@PostMapping("/sign-up")
public String signUpSubmit(@Valid SignUpForm signUpForm, Errors errors) {
if (errors.hasErrors()) {
return "account/sign-up";
}
Account account = accountService.processNewAccount(signUpForm);
accountService.login(account);
return "redirect:/";
}
get으로 home을 보여주는 것보다 post 한 다음에 리다이렉트 하는 것, 아무리 리프레시 하더라도 ... (?!)
어떤 요청을 처리했을 때 다시 일어나지 않았으면 좋겠다고 생각하면 리다이렉트 .. 등 적절한 요청을 생각해보자.
출처 : 인프런 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발