인증 메일 최종편이길 바라며..
앞서 인증 메일의 하이퍼링크를 클릭하면 아래와 같은 주소로 이동하도록 설정해두었다.
"<a href='http://localhost:8081/ooo/memberAuth?idx=" + idx + "&authCode=" + authCode + "'>
<b>인증하려면 클릭하세요.</b></a>"
// 메일 인증 처리
@GetMapping (value = "memberAuth")
public String memberAuth(@RequestParam int idx, @RequestParam String authCode) {
// member_idx, 인증코드 파라미터 가져와서 AuthInfoBean 객체에 저장
AuthInfoVO authInfo = new AuthInfoVO(idx, authCode);
// checkAuthInfo() 메서드 호출하여 인증 정보 확인 요청
int authSuccessCount = service.checkAuthInfo(authInfo);
System.out.println(authSuccessCount);
return "";
}
<!-- 회원가입 - 인증 정보 일치 여부 확인 -->
<select id="selectAuthInfo" resultType="integer">
SELECT COUNT(*)
FROM auth_info
WHERE
member_idx = #{member_idx}
AND
auth_code = #{auth_code}
</select>
값이 잘 넘어오는지 콘솔에 찍어보았다.
INFO : jdbc.sqlonly - SELECT COUNT(*) FROM auth_info WHERE member_idx = 8 AND auth_code = '$XXMs3cmfsaaJWVcPvnhvIk7z$yIwFJlSqFCr6V!4UTv4f$jAM'
INFO : jdbc.resultsettable -
|---------|
|count(*) |
|---------|
|1 |
|---------|
1
잘 넘어오는 것을 확인했으니 다음 단계
// 메일 인증 처리
@GetMapping (value = "memberAuth")
public String memberAuth(@RequestParam int idx, @RequestParam String authCode) {
.
.
.
if(authSuccessCount > 0) {
int authUpdateCount = service.modifyAuthStatus(idx);
}
return "";
}
<!-- 메일 인증 - Member 테이블 인증 상태 컬럼 UPDATE -->
<update id="updateAuthStatus">
UPDATE
member
SET
member_auth_gb = 'Y'
WHERE
member_idx = #{idx}
</update>
// 메일 인증 처리
@GetMapping (value = "memberAuth")
public String memberAuth(@RequestParam int idx, @RequestParam String authCode) {
.
.
.
if(authSuccessCount > 0) {
int authUpdateCount = service.modifyAuthStatus(idx);
int authInfoDeleteCount = service.deleteAuthInfo(idx);
}
return "";
}
<!-- 메일 인증 - 인증됐을 경우 auth_info 테이블 데이터 삭제 -->
<delete id="deleteAuthInfo">
DELETE
FROM auth_info
WHERE
member_idx = #{idx}
</delete>
UPDATE, DELETE 모두 잘 된 것을 확인!
// 메일 인증 처리
@GetMapping (value = "memberAuth")
public String memberAuth(@RequestParam int idx, @RequestParam String authCode, Model model) {
// member_idx, 인증코드 파라미터 가져와서 AuthInfoBean 객체에 저장
AuthInfoVO authInfo = new AuthInfoVO(idx, authCode);
//checkAuthInfo() 메서드 호출하여 인증 정보 확인 요청
int authSuccessCount = service.checkAuthInfo(authInfo);
System.out.println(authSuccessCount);
// => 인증 성공 시 인증 정보 갱신
// => 아니면, "인증 실패. 인증 정보를 확인하세요." 출력
if(authSuccessCount > 0) {
int authUpdateCount = service.modifyAuthStatus(idx);
int authInfoDeleteCount = service.deleteAuthInfo(idx);
// => 성공 시, 로그인 페이지 서블릿 주소 요청
// => 실패 시, "인증 실패. 인증 정보를 확인하세요." 출력
if(authUpdateCount > 0 && authInfoDeleteCount > 0) {
return "member/login";
} else {
model.addAttribute("msg", "인증 정보 갱신 실패. 재시도 바랍니다.");
return "fail_back";
}
} else {
model.addAttribute("msg", "인증 실패. 인증 정보를 확인하세요.");
return "fail_back";
}
}