Spring boot kim's cafe/회원관련

Spring boot 마이페이지!(4) 비밀번호 변경 with validation

디비드킴 2021. 6. 15. 12:59

비밀번호 심플하게 변경 페이지를 만든다

controller로가서

이제 처리해주는 작업을 만들자

 

restcontroller로 가서 

작성해준다!

 

이렇게 받을 건데 현재는 리턴 타입이 boolean

생각해보면 이전부터 계속 boolean으로 리턴을 

해줬는데 그랬을 때 생기는 문제가 

아니 true/false인건좋은데 

그래서 뭐가 틀린건데..?

인증번호? 아니면 서버 문제??

이렇게 질문이 생길 수가 있다 그래서 

다음부턴 enum을 사용해서 boolean과

error메시지를 담아서 리턴해보자!

일단 boolean으로 작성!

 

이제 이번에는 특별히 native쿼리를 사용할 예정이다 

dao로 가서

userdao.java

 

이렇게 update문을 날려주는데

좀 특이하다 

select에 비해 붙는 게 많다

이유는 둘이 사용하는 쿼리 작동방식이 다른데

 @Modifying 

 @Transactional

둘이없다면

이런 에러가 나오는데

delete/update/insert는

리턴 타입이 없는 형식이어서

executequery를 사용하지 않는다

한 달 전 jdbc 배울 때도 

select와 그 외는 pstmt에서 꺼내는 형식이 달랐다

그래서 꼭 붙여주자!

(이걸로 몇 시간 동안 헤맨 기억이 있다)

도대체 native 나머지 세 개 어캐하는데!!!!!! 하면서

 

그리고 userservice로 와서

userservice.java

BCryptPasswordEncoder bCryptPasswordEncoder=security.pwdEncoder()를 이용해서

bCryptPasswordEncoder.matches()를 사용한다 

이게 뭐냐면 해시되어있는 비밀번호를 

열어서 해시되어있지 않는 비밀번 와 일치한 지

검사해주는 기능이다

이렇게 현재 비밀번호가 맞는지 검증을 하고

String hashpwd=bCryptPasswordEncoder.encode(npwd2);

                    userdao.updatePwdNative(hashpwd,uservo.getEmail());

                    principaldetail.getUservo().setPwd(hashpwd);

맞다면 다시 해시를 해서

db를 수정한 후 현재 시큐리티 세션에 pwd값을 변경해준다

 

그리고 restcontroller를 다시 바꿔주고

ajax를 만든다

html 수정

1111->2222로 해보겠다!

변경 전

변경 후

잘 변경되고 

비밀번호 일치 여부

새 비밀번호 일치 여부 

된다

이제 비밀번호 dto를 만들어서 

null/이나 빈칸이 못 들어오게 해주자!

pwddto.java

여러 종류가 있는데

notemthy/notnull/notblank

난 ""/" "/null

모두 허용하지 않게 

notblank를 선택했다!

 

restcontroller

 

@Valid를 붙여서 사용하면 된다

 

userservice

이제 다음번엔 

 

비밀번호 찾기를 구현할 것이다!