반응형

 

웹페이지 입력 인증키 전송 구현

 

MemberController.java

  • @GetMapping 형식으로 id를 받아서 출력하는 코드 구현

 

 

email_auth.html

  • 계정 활성화 알림 페이지

 

 


웹페이지 입력 인증키 전송 테스트

 

계정 활성화 페이지 접근

  • http://localhost:8080/member/email-auth

 

 

임의의 값 입력

  • http://localhost:8080/member/email-auth?id=123456

 

 

  • 입력값 확인

 

 


인증키 값을 이용한 계정 활성화 구현

 

MemberService.java

  • uuid 값에 따라 계정을 활성화 여부를 결정
  • 'emailAuth'를 boolean 타입으로 선언

 

 

MemberServiceImpl.java

  • 인터페이스(MemberService.java)에서 emailAuth가 추가
  • Implement methods 구현해야 함

 

 

MemberRepository.jaca

  • Optional<Member> findBy <Tab or Enter>

 

 

MemberRepository.jaca

  • Optional<Member> findByEmailAuthKey <Tab or Enter>

 

 

MemberRepository.jaca

public interface MemberRepository extends JpaRepository<Member, String> {

    Optional<Member> findByEmailAuthKey(String emailAuthKey);
}

 

 

MemberServiceImpl.java

@Override
public boolean emailAuth(String uuid) {

    Optional<Member> optionalMember =
            memberRepository.findByEmailAuthKey(uuid);

    if (!optionalMember.isPresent()) {
        return false;
    }

    Member member = optionalMember.get();
    member.setEmailAuthYn(true);
    member.setEmailAuthDt(LocalDateTime.now());
    memberRepository.save(member);

    return true;
}

 

 

Member.java

  • 계정 인증 시간을 저장할 변수 선언

 

 

MemberContoller.java

@GetMapping("/member/email-auth")
public String emailAuth(Model model,
                        HttpServletRequest request) {

    String uuid = request.getParameter("id");
    System.out.println(uuid);

    boolean result = memberService.emailAuth(uuid);
    model.addAttribute("result", result);

    return "member/email_auth";
}

 

 

email_auth.html

  • result 값에 따라 계정 활성화 여부 출력
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title> 회원 활성화 </title>
</head>
<body>

    <h1>회원 활성화</h1>

    <div th:if="${result eq true}">
        <p>회원님의 계정이 횔성화 되었습니다.</p>
    </div>

    <div th:if="${result eq false}">
        <p>회원님의 계정이 횔성화에 실패하였습니다.</p>
    </div>

</body>
</html>

 

 


인증키 값을 이용한 계정 활성화 테스트

 

  • 가입된 회원정보의 계정인증여부(email_auth_yn) 값 false 확인

 

 

  • 웹페이지에서 임의의 계정인증키를 입력하여서 활성화 실패 

 

 

  • DB에서 계정인증키(email_auth_key)를 복사
  • http://localhost:8080/member/email-auth?id=2569d58b-b2cc-4d73-a823-10e46b684d7b

 

 

  • 인증키 값에 따라서 결과값(true) 반환되어 계정 활성화 성공

 

 

  • DB에서 계정인증여부(email_auth_yn) 값 true로 설정되고
  • 계정인증시간(email_auth_dt)가 입력된 것을 확인

 


회원 정보 빌더 패턴 적용

Member.java

@AllArgsConstructor
@NoArgsConstructor
@Builder

 

 

MemberServiceImpl.java

  • 가독성 향상을 위한 빌더 패턴 적용
//build pattern
Member member = Member.builder()
        .userId(parameter.getUserId())
        .userName(parameter.getUserName())
        .phone(parameter.getPhone())
        .password(parameter.getPassword())
        .regDt(LocalDateTime.now())
        .emailAuthYn(false)
        .emailAuthKey(uuid)
        .build();
memberRepository.save(member);

 

 

MemberServiceImpl.java

  • '가입 완료' 링크를 클릭하면 새 창에 열리도록 설정
String email = parameter.getUserId();
String subject = "fastlms 사이트 가입을 축하드립니다.";
String text = "<p>fastlms 사이트 가입을 축하드립니다.</p>" +
        "<p>아래 링크를 클릭하셔서 가입을 완료 하세요.</p>" +
        "<div><a target='_blank' href='http://localhost:8080/member/email-auth?id=" +
        uuid + "'> 가입 완료 </a></div>";
mailComponents.sendMail(email, subject, text);

 

 


회원 가입 및 계정 인증 활성화 테스트

 

  • 회원 정보 입력 - 회원 가입 하기

 

 

  • 회원 가입 결과 - 회원 가입 완료

 

 

  • 계정 인증 메일 수신

 

 

가입 완료 링크 클릭 전

  • 계정인증상태 : false
  • 계정인증시간: <null>

 

 

  • '가입 완료' 링크 클릭 - 계정 활성화(새 창)

 

 

가입 완료 링크 클릭 후

  • 계정인증상태 : true
  • 계정인증시간: LocalDataTime.now() 

 


반응형

+ Recent posts