spring 39

Springboot Jwt+아이디 찾기!

회원가입 때 받은 전화번호로 아이디를 찾아보자 그냥 휴대폰 인증 한 번 더 구현해보는 것이다! https://cordingmonster.tistory.com/107?category=1038496 Spring boot Jwt+휴대폰인증!(1) with Coolsms 이제 전화인증을 구현할 건데 아임 포트를 사용하려 했으나... 다날 서비스를 신청해야 하고 다날 서비스 신청에는 사업자등록증이 필요해서 허접하지만 직접 구현했다! 1. 세션 인증을 요청-> cordingmonster.tistory.com 이전 로직에서 바꿔져야 할 부분이 있다 if(userService.confrimPhone(phoneNum))를 제거해주자 이게 있으면 아이디 찾기 시 인증번호를 보낼 수없다 물론 다른 함수를 만들어서 써도 된다..

Springboot Jwt 토큰 재발급!(1) with 리프레시토큰

이제 로그인 시 리프레시 토큰 유효기간을 체크 해서 리프레시 토큰 기간이 남았다면 로그인 시 리프레시 토큰 미발급을 진행하겠다 이유는 우리가 하루에 네이버/카카오 등 횟수를 생각하면 그때그때마다 리프레시 토큰을 db에 넣으면 엄청나 질 것이다 예 테스트 한건만 81개이다 3일 치 다 가지고 있었다면! 엄청났을 것이고 유저가 많다면! 리프레시 토큰 db가 아주 난리가 날것이다 그래서 로그인 시 기한 검사를 해주자! application 처음으로 사용해봤다 근데 저 노란 줄... 거슬리는데 작동은 잘된다 잘못 쓰고 있나 더 검사해봐야겠다! utillService timeStamp->localDateTime으로 변환 해주자 LocalDateTime timestamp2=timestamp.toLocalDateTi..

Springboot Jwt 토큰만들기!(1) with securiy

새 토이 프로젝트를 만들기 전 이전까지는 다른 인증 시스템을 만들고 싶었다 그러던 중 jwt 토큰을 발견했었고 너무 멋있었다 다중 서버+리프레쉬 토큰 db저장 우와... 무조건 해보고 싶었다 그래서 3일 동안 시도했고 성공했다! 시작해 보자! 이분의 강의를 보고 도전해봤다! https://www.youtube.com/watch?v=cv6syIv-8eo&list=PL93mKxaRDidERCyMaobSLkvSPzYtIk0Ah&index=12 1. 의존성 주입 implementation group: 'com.auth0', name: 'java-jwt', version: '3.18.1' https://mvnrepository.com/artifact/com.auth0/java-jwt/3.18.1 참 유용하고 좋은..

Springboot  문자 인증/전송!(1) with coolsms And Message

api방식을 사용하고 싶었는데 https://docs.coolsms.co.kr/authentication/api-key API Key 인증 방식 docs.coolsms.co.kr 진짜 토큰 받는 방식이 말도 안돼서 몇 시간 동안 고민하다가 어찌어찌했는데 보내려고 보니까 Authorization: apiKey=, date=, salt=, signature= 이건 json 전송도 아니고 뭔지도 모르겠어서 포기했다.. 진짜 엄청 돌아다니다가 마지막 방법을 찾았다 일단 실패한 방법 가장 흔히 돌아다니는 방법이었는데 https://velog.io/@woo0_hooo/Spring-Boot-%EB%AC%B8%EC%9E%90-%EB%B3%B4%EB%82%B4%EA%B8%B0-%EA%B5%AC%ED%98%84 [Spri..

Springboot 예약내역 페이지 만들기!(1) with thymeleaf

이제 예약 내역 페이지를 만들 건데 1. 예약시간이 지난 예약은 표시해주지 않는다 2. 히스토리를 같이 표시해준다 vo를 고쳐주자! 추후 수정/삭제를 위해 몇 가지를 추가해주자! @Column(name = "rid",nullable = false) int rid; @Column(name="email",nullable = false) String email; @Column(name = "seat",nullable = false) String seat; controller 예약 내역 페이지에 갈 때 필요한 것들이다 reservationservice.getReservationByEmail(email)는 시간이 아직인 예약 historyservice.getHistories(email,page,totalpages..

Springboot 당일 예약 시스템 만들기!(3) with json and Transactional

+추가 20210821 당일이 아닌 더 업그레이드 된 예약시스템은 여기있습니다 https://cordingmonster.tistory.com/138 Springboot 예약시스템 만들기!(1) 연/월/일/요일 뿌리기! 이전에 kimscafe에서는 '당일' 예약만 가능한 시스템이었다 이번엔 언제든 가능한 예약시스템을 사용해보자! 시나리오 자리 선택->년/월/날짜 표시-> 날짜 선택-> 시간표시-> 예약 프런트 서버 html cordingmonster.tistory.com 이제 예약 시스템 2번째 히스토리 시스템을 만들어보자! 이게 히스토리와/예약의 다른 부분은 예약 시스템은 사용자가 예약을 사용하거나/예약시간을 놓치거나 하거나 예약의 효력이 없어지는 상황이 된다면 사라진다 하지만 히스토리는 사용하든/효력이..

Springboot 당일 예약시스템 만들기!(2) with Enum

생활 치료소에 온 지 5일이 지났다 5일 동안 열이 좀 나서 코딩을 못하다 이제 괜찮아져서 다시 적는다 두 가지에 대한 검증을 할 건데 1. 예약하는 사이에 이미 예약 이참 2. 불법 적으로 이전 시간으로 조작해서 예약을 시도 service 상황에 맞게 검증해보자 그리고 경우가 늘어나므로 반환 형식을 string로 해준다 service true면 예약이 진행 나머지면 enum의 .valueOf를 이용해서 메시지를 던 저주자! 정상적 예약 시도 중복 시간 예약 시도 (다른 아이디 사용) 이전 시간 예약 시도 마지막 줄은 enum메시지인데 j쿼리가 아직 엉망이어서 받지 못하는 중이다 일단 그건 마지막에 하고 이제 히스토리를 만들러 가자! 히스토리는 모든 예약을 가지고 있는 테이블로 만들 것이다! 아 예약 게..

Springboot 당일 예약시스템 만들기!(1)

아 정말 혼자 공부했을 때 뿌듯했던 파트였다 근데... 지금 아버지가 격리 시설에 들어가시고... 나도 몸살이 좀 있어서 검사를 받았다 정말 열심히 쓰고 싶었던 파트인데 국비지원도 같이 들으면서 열심히 하고 있는데 정말 절망이 찾아온 거 같다 격리 시설 가게 된다면... 노트북으로라도 진행할 생각인데 망할 lombok이 안 먹는다@data가 진짜 젠장 일단 대충 설명을 해야 할 거 같다 여기서는 일단 j쿼리를 사용했고 추후에 교체 예정이다 html 테스트를 위해 잠시 authorize 밖에 빼놨다 j쿼리 부분은 옛날에 짜는 거라 너무 개판이라 나중에 올리는 게 좋을 거 같아서 나중에 올려보자 service 첫 번째로 예를 들어 지금이 현재 오후 8시라면 당일 오전 6시 가 예약이 없었어도 던져주면 안 되..

Springboot 게시판만들기!(14) 게시글 삭제

이제 대망의 삭제를 할 건데 게시글이 삭제될때 게시글만 삭제되면 안 되고 사진/내용/댓글 모두 삭제시키려고 한다 이미 사진삭제하는 함수는 만들어 놨으니 글/댓글부터 삭제해주는 함수를 만들자 commentdao native쿼리를 이용해서 게시글 번호로 관련된 댓글들을 한 번에 삭제할 수 있게 해 주자 commentservice dao를 불러주는 함수이다 boardservice Listalreadyimages=new ArrayList(); uploadimageservice.deleteImage(alreadyimages, bid); 이전 함수를 호출해서 빈 배열을 준다 이렇게 되면 기존 사진의 배열이 비어있으므로 db의 사진 정보가 그대로 deleteimages배열에 들어가서 그대로 delete문으로 들어가게..

Springboot 게시판만들기!(13) 댓글 수정 with disabled

수정 기능을 넣을 건데 html 현재 disabled 되어있는 버튼을 '수정'을 눌르면 '확인'/'내용'에 있는 disable이 사라지게 해 주려고 한다 여기서 주의할 점 사용자가 '수정'을 누르고 "어 이 댓글이 아니네"하고 바로 다른 댓글에 '수정'을 누른다면 이전 '확인/'내용'disable이 다시 올라와야 한다! js 굳이 같은 코드를 true/false로 나눈 이유는 beforeClickUpdateID=cid;때문이다 이전 클릭했던 '수정'의 id를 알아야 하기 때문에 나눠 났다! 아주 잘 작동해준다 이제 service로 가서 orElseThrow(()->new Exception("존재하지 않은 댓글입니다")) 람다식을 이용했다 밑에 deleteCommentByCid와 비교해보면 뭔가 멋있다 ㅋ..