비밀번호 심플하게 변경 페이지를 만든다
controller로가서
이제 처리해주는 작업을 만들자
restcontroller로 가서
작성해준다!
이렇게 받을 건데 현재는 리턴 타입이 boolean
생각해보면 이전부터 계속 boolean으로 리턴을
해줬는데 그랬을 때 생기는 문제가
아니 true/false인건좋은데
그래서 뭐가 틀린건데..?
인증번호? 아니면 서버 문제??
이렇게 질문이 생길 수가 있다 그래서
다음부턴 enum을 사용해서 boolean과
error메시지를 담아서 리턴해보자!
일단 boolean으로 작성!
이제 이번에는 특별히 native쿼리를 사용할 예정이다
dao로 가서
이렇게 update문을 날려주는데
좀 특이하다
select에 비해 붙는 게 많다
이유는 둘이 사용하는 쿼리 작동방식이 다른데
@Modifying
@Transactional
둘이없다면
이런 에러가 나오는데
delete/update/insert는
리턴 타입이 없는 형식이어서
executequery를 사용하지 않는다
한 달 전 jdbc 배울 때도
select와 그 외는 pstmt에서 꺼내는 형식이 달랐다
그래서 꼭 붙여주자!
(이걸로 몇 시간 동안 헤맨 기억이 있다)
도대체 native 나머지 세 개 어캐하는데!!!!!! 하면서
그리고 userservice로 와서
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/이나 빈칸이 못 들어오게 해주자!
여러 종류가 있는데
notemthy/notnull/notblank
난 ""/" "/null
모두 허용하지 않게
notblank를 선택했다!
restcontroller
@Valid를 붙여서 사용하면 된다
userservice
이제 다음번엔
비밀번호 찾기를 구현할 것이다!
'Spring boot kim's cafe > 회원관련' 카테고리의 다른 글
Springboot 회원탈퇴!(1) (0) | 2021.07.10 |
---|---|
Spring boot 마이페이지!(3) 이메일 인증 (0) | 2021.06.14 |
Spring boot 마이페이지!(2) 이메일 인증 with JavaMailSender (0) | 2021.06.14 |
Spring boot 마이페이지!(1) with AuthenticationPrincipal (0) | 2021.06.14 |