웹코딩 8

Springboot 마이페이지!(3) 비밀번호 변경!

이제 비밀번호 변경을 해주자 프런트 서버는 현재 비밀번호/새 비밀번호/새 비밀번호 확인 이렇게 던져주면 된다 백엔드 서버 restController service 현재 비밀번호/새 비밀번호가 if(!passwordEncoder.matches(pwdDto.getNowPwd(), userDto.getPwd())) if(!pwdDto.getNewPwd().equals(pwdDto.getNewPwd2())) 일치하는지 검증해주고 시큐리티 비밀번호 인코더를 사용해서 새 비밀번호를 입력해주자! userDto.setPwd(passwordEncoder.encode(pwdDto.getNewPwd())); 테스트 변경 전 현재 비밀번호 불일치 유효성 4~10자 사이 3개 중 하나라도 유효성 검사를 통과하지 못하면 새 비밀..

Springboot Jwt+아이디 중복 검사! with XMLHttpRequest

새로운 토이 프로젝트! 회원가입부터 해보자! 크게 다를 건 없다 이전 jwt내용은 여기 있다 https://cordingmonster.tistory.com/category/Jwt 'Jwt' 카테고리의 글 목록 cordingmonster.tistory.com 아이디 중복 검사 로직 service 회원이 존재하는지 찾는 함수 userDto findEmail(String email) dao를 이용해 회원을 찾는다 return userDao.findByEmail(email); 값을 리턴한다 없다면 null이 리턴됨 판별하는 함수 public boolean confrimEmail(String email) 값을 판별한다 if(findEmail(email)==null) 없다면 true 있다면 false 리턴한다 re..

Springboot 네이버로그인!(1) code받기 state만들기

소스를 정리하기 전에 좀 아쉬움이 남았다 아임 포트로 api를 성공하고 나니까 너무 짜릿해서 한 번 더 해보고 싶었는데 무얼 할까 하다가 자주 사용할 거 같은 네이버 로그인을 선택했다! 네이버는 토큰을 받기 전에 https://nid.naver.com/oauth2.0/authorize 링크로 가서 code/state를 얻어와야 했다 당황스러웠지만 성공했다! url통신을 해야 한다 조건은 뒤에 파라미터로 api아이디/callbackurl/state를 만들어서 줘야 한다 여길 참고해서 만들어보자 https://developers.naver.com/docs/login/api/api.md 네이버 아이디로 로그인 API 명세 - LOGIN '네이버 아이디로 로그인 API는 네이버 로그인 인증 요청 API, 접근 ..

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 당일 예약시스템 만들기!(2) with Enum

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

Springboot 구글로그인!(2) with loadUser and principaldetail

자 이제 loaduser를 작성할 건데 그전에 근데 사실 지금도 로그인이 된다 다만 우리가 원하는 값없이 id값만 딸랑 받아서 오게 될 뿐이다 OAuth2UserRequest userRequest 얘가 들고 온 정보를 빼내면 된다 열어보면 막 뭐를 열심히 들고 와 줬는데 이제 우리가 필요한 정보를 꺼내서 쓰면 된다 뭐로? super.loadUser(userRequest) 얘로 마우스를 갖다 대 보면 리턴 타입이 OAuth2 User이다 그러면 이제 이메일을 가져와서 이미 등록되어있는지 확인하고 등록되어있다면 로그인하고 아니라면 자동 회원가입 후 로그인시켜주면 된다! 우리가 찾는 정보는 .getAttributes()안에 있고 .getAttributes()는 map형식이므로 키워드로 찾아주자 키워드는 Sys..

Spring boot 로그인하기! with Security

controller에 로그인 페이지를 걸어준다 loginpage를 구현해주고 구글로그인 페이스북로그인 이거는 스프링에서 oauth2에서 미리 지정해서 논 경로라고 한다 그리고 여기서 주의할 점 name="username" name="password" 스프링한테 줄 때 이렇게 해줘야 한다 물론 바꿀 수도 있는데 그냥 안 바꾸고 진행하는 게 편하다! 왜 이렇게 받는지는 시큐리티 로그인을 만들면서 봐보자! 일단 로그인 성공 시 담을 principaldetail을 만든다 spring으로 자체적으로 제공해주는 userdetails를 임플리먼트 받는다! 로그인에 성공 했다면 시큐리티 전용 세선에 authentication으로 감싸 져서(?) 들어가게 된다 사용 시에는 security session=>authenti..

Spring boot 회원가입 만들기!(2) 아이디중복검사 with ajax

이제 아이디 중복검사를 할 건데 바닐라 js 비동기 통신을 할 것이다 원래는 j쿼리를 사용했지만 바닐라 js로 사용하는 습관을 들일 예정이다 순서는 이렇게 된다 ajax요청->requestcontroller요청->userdao탐색->userservice반환->requset반환->ajax가 받음 userdao에 jpa 식으로 써준다 크정말 신기하다 저렇게 대소문자를 구별해서 써주면 혼자서 db에 select *from 테이블 이름 where email=?! 이렇게 쏴준다! 이제 userservice를 만들어준다 비웠다면 true가 들어있는 yes를 줄 거고 아니라면 false가 있는 no를 줄 것이다! (추후 existsByEmail로 변경했다) requsercontroller를 지정해준다 import 맞..