본문 바로가기

반응형

Server Programming

(200)
[스프링 풀스택 클론 코딩 - 회원가입] (1-10) 회원 가입 인증 메일 확인 테스트 및 리팩토링 H2 DB의 경우 애플리케이션 종료시 초기화 된다. 1. 테스트 코드 작성 (1) 입력값 오류 (2) 입력값 정상 2. 리팩토링 (1) 코드의 위치 수정 (2) 코드의 가독성 높이기 (3) 코드의 메서드화 1. 입력값 오류, 입력값 정상 테스트 작성 -> 마찬가지로, 토큰값 생성하고 @Transactional로 DB싱크 맞춘 후, 동일 여부 확인 package com.demo.account; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.mockito.ArgumentMatchers.any; import static org.mockito.BDDMockit..
[스프링 풀스택 클론 코딩] 회원가입 이메일 인증 정상/오류 시 분기 1. 에러 발생시 2. 에러가 null인 경우 -> 해당하는 model에서 numberOfUser와 nickname을 가져온다. th:if="${error}" th:if="${error == null}" th:text="${numberOfUser}" th:text="${nickname}" 3. 해당 이메일에 대한 토큰값과 해당 이메일 정상 여부 확인하기 위해서는 @Transactional 어노테이션 적용필수 -> DB와의 싱크 위해 @Transactional public void processNewAccount(SignUpForm signUpForm) { // 1. 회원정보 저장 // 2. 이메일 토큰 만들기 // 3. 이메일 전송 Account newAccount = saveNewAccount(sign..
[스프링 풀스택 클론 코딩 - 회원가입] (1-9) 회원가입 이메일 인증 확인 이메일 인증을 하는 이유 : 가짜 이메일을 통해, 무분별한 가입을 막기 위함 -> 토큰값을 이용해, 전송한 토큰과 일치 여부를 확인하는 것이 필요하다. (1) 이메일 확인 오류 -> 토큰값 불일치, 이메일 주소 불일치 등 보안을 위해 응답정보제공 최소화 (2) 이메일 확인 성공 -> 몇번째 유저인지 리턴 소셜 인증을 사용하는 방법도 존재 -> api를 이용 localhost:8080/check-email-token?token=4cfa2712-354b-403f-8d18-53fdca98d788&email=your@gamil.com을 이용해 이메일 인증 확인 메일 체크 checked-email 로그인 가입 데모 이메일 확인 이메일 확인 링크가 정확하지 않습니다. 데모 이메일 확인 이메일을 확인했습니다. 10번..
[스프링 풀스택 클론 코딩 - 회원가입] (1-8) 회원가입 패스워드 인코딩 암호를 평문으로 저장하지 않기 위해 해시 함수를 이용해 인코딩해서 저장 -> 해싱 알고리즘 스프링 시큐리트가 제공하는 bcrypt를 이용하는데, 솔트를 사용 -> 해커가 규칙성을 파악하기위해 여러번 인덱싱 해서, 복호화가 가능하도록 하는 것을 쓰레기값을 추가해 방지하는 방법 -> 즉, 같은 암호를 가지고도 새로운 값을 추가하므로, 안전한 저장이 가능하다. AccountControllerTest package com.demo.account; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static..
[스프링 풀스택 클론 코딩 - 회원가입] (1-7) 회원가입 리팩토링 및 테스트 1. 메일 발송 테스트 실제로 이메일을 보내는지 확인하기에는 어려움이 있기 때문에 가짜객체를 이용해 콘솔창에 띄우는 방식을 일단 사용했는데, 그렇기 때문에, 해당 메일을 발송했는지 확인하는 테스트를 하기 위해서 외부연동을 통해 목업 객체를 이용해 테스트를 수행한다. 해당 테스트처럼 간단하게 하는 이유는 나중에 코드를 변경할 경우에 테스트 코드도 모두 변경을 해줘야하는데 그때 똑같이 변경을 해줘야하는 어려움이 따르기 때문이다. 2. 리팩토링 리팩토링이 필요한 이유는 먼저 기능이 성공적으로 수행할 수 있도록 작성한 코드를 간결하게, 가독성있게 변경해주는 작업이다. (1) 함수화 Extract Method (2) 컨트롤러 최소화 컨트롤러가 의존성을 많이 가지게 되는것을 줄이기 위해 -> 서비스로 이전한다. -..
[스프링 풀스택 클론 코딩]목업 테스트 mokito 이용하기 https://www.inflearn.com/questions/516740 then(javaMailSender) 에서 import가 되지 않습니다. - 인프런 | 질문 & 답변 11분 40초 쯤에서 then(javaMailSender).should().send(any(SimpleMailMessage.class)); 이 부분에서 then이 임포트가 되지 않습니다..org.mockito.core 를 따로 쳐서 임포트 해보려 했지만 ... www.inflearn.com https://www.inflearn.com/questions/142458 회원 가입 리팩토링 및 테스트 영상 질문입니다. - 인프런 | 질문 & 답변 @DisplayName('회원 가입 처리 - 입력값 정상') @Test void signUp..
[스프링 풀스택 클론 코딩 - 회원가입] (1-6) 회원가입 폼 서브밋 처리 AccountController package com.demo.account; import javax.validation.Valid; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.Errors; import org.springframework.web.bind.WebDataBinder; import org.springframework.web...
[스프링 풀스택 클론 코딩 - 회원가입] (1-5) 회원가입 폼 서브밋 검증 회원가입시 중복 닉네임, 중복 아이디인지 검증하고, 해당하는 조건에 충족한지 검증한다. 또한, 프론트엔드에서 한번 검증하고, 혹시모를 경우를 대비해 백엔드에서 검증하는 절차를 거친다. AccountController package com.demo.account; import javax.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.Errors; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind...

반응형