Spring boot kim's cafe/문자발송시스템

Springboot 문자인증/전송!(2) with coolsms And HttpSession

디비드킴 2021. 7. 10. 14:44

이메일 인증과 딱히 다르진 않다

 

핸드폰으로 인증번호를 전송하자!

html

js

 

service

coolsmsservice.java

from이 보내는 번호인데

실제 번호여서 지워놨다

가짜 번호로 테스트를 해봐야겠다

없는 번호도 가는지

안 간다 테스트 해봤는데 

없는 번호로 하면 안간다

 

restcontroller

restcontroller.java

f(principaldetail.getUsername()!=null)

로그인 여부 검사를 하고

(아마 비로그인 시 알아서 예외를 일으켜주는 걸로 아는데

혹시 몰라서 걸었다)

String smsRandNum=utilservice.GetRandomNum(6);

6자리 인증번호를 만들고

httpSession.setAttribute("phoneNum", phone.get("phone"));

httpSession.setAttribute("smsRandNum", smsRandNum);

세션에 요청한 전화번호와 함께 담아준다

if(coolSmsService.sendMessege((String)phone.get("phone"), smsRandNum))

번호로 전송한다

 

마지막 꺼만 입력하면 된다

 

이제 처리를 위한 작업을 하자

js

js

service

userservice.java

만약에 번호가 맞다면 

uservo.setPhone(phoneNum);

db에 전화번호를 등록해주고

uservo.setPhonecheck("true");

인증을 true로 바꿔준다

 

restcontroller

restcontroller.java

f(principaldetail.getUsername()!=null)

로그인 여부를 확인하고

if(httpSession.getAttribute("smsRandNum").equals(jsonObject.get("randnum")))

번호가 맞는지 검사한다

principaldetail.getUservo().setPhonecheck("true");

맞다면 시큐리티 세션정보를 바꿔주고

userservice.changeSmsCheck(principaldetail.getUsername(),(String)httpSession.getAttribute("phoneNum"));

db정보를 바꿔주자

httpSession.removeAttribute("phoneNum");

httpSession.removeAttribute("smsRandNum");

그리고 세션을 비워주자!

 

결과

 

다른 값 입력

이전 값 입력

388963

마지막 값 입력

545253

db도 바뀌고 

현재 로그인 시큐리티 세션도 잘 바뀐다!

 

이제 코드 정리를 좀 하고  답글을 만들어야겠다

예약시스템에 전화인증 여부 코드도 넣어야 하고 

컨트롤러나 확인하는 방식도 좀 획일 화 시키고 해야겠다!