본문 바로가기

프로젝트5

[Spring Boot, Data JPA] 마이페이지 - 찜(좋아요), 협약 맺기(친구 추가) 이제 남아있는 기능인 찜 목록, 협약 맺기 기능을 완성해보자. 찜(좋아요) 기능 좋아요의 경우에는 가게 좋아요와 게시글 좋아요로 나누어진다. 대상은 다르지만 과정은 동일하므로 가게 좋아요를 기준으로 살펴보자. fig 2-1의 하트를 클릭하면 하트가 채워지고 해당 가게가 회원의 favoriteStores 리스트에 추가되고, 다시 터치하면 제거된다. 컨트롤러 @PostMapping("/favorite/toggle") public ResponseEntity addMemberFavoriteStore(@RequestParam Long storeId, Principal principal) { Long memberId = Long.parseLong(principal.getName()); return memberSer.. 2022. 10. 1.
[Spring Boot, Data JPA] 마이페이지 - 회원 정보 수정, 개인 이벤트 등록 대략적인 기능 이제 회원가입/로그인 과정까지는 구현이 되었으니 마이페이지를 구현해보자. 일반 회원들은 로그인을 해도 즐겨찾는 가게를 모아서 확인할 수 있는 정도의 기능만 있어서 마이페이지는 크게 필요없지만, 사장님 회원들은 자신의 가게 정보를 수정, 자체적인 이벤트를 추가/삭제, 협약 요청 확인 및 처리를 해야하기 때문에 해당 기능에 편하게 접근할 수 있는 마이페이지가 필수적이다. 마이페이지에 들어가면 fig 1처럼 페이지가 뜬다. 여기에 있는 기능들을 구현하면 된다. 내가 담당한 파트는 내 가게 정보 수정, 개인 이벤트 등록, 찜 목록, 협약 요청 목록이다. 하나씩 살펴보자. 내 가게 정보 수정 마이 페이지에서 '내 가게 정보 수정' 버튼을 클릭하면 fig 2와 같은 페이지로 넘어간다. 그리고 이때의 .. 2022. 9. 28.
[Spring Boot, Spring Security, Data JPA] 로그인/로그아웃 2 이번에는 reissue와 로그아웃을 기능을 구현해볼 차례이다. 저번 글에서 확인해서 알겠지만 refresh token을 관계형 DB에 저장하지 않고 redis라는 인메모리 비관계형 DB에 저장했다. 아무래도 reissue 요청이나 로그아웃 요청은 빈번히 발생하기 때문에 성능적으로도 유리한 것도 있지만, 사실 프로젝트 수준에서 이는 크게 체감되지 않았고 오히려 데이터 저장 시간을 간단히 설정할 수 있다는 점이 유용하다고 생각했다. 어쨌든 이 글에서는 reissue, logout 기능을 어떤 식으로 구현했는지 살펴보자. Reissue access token의 유효기간은 5분정도로 설정해놓았다. 그리고 클라이언트에서 유효기간 만료 몇 초전에 access token과 refresh token을 body에 담아 .. 2022. 9. 18.
[Spring Boot, Spring Security, Data JPA] 로그인/로그아웃 1 저번에는 회원가입을 해보았으니 이번에는 로그인을 할 차례이다. 여기서는 spring security를 사용하는데, 생각보다 매우 복잡하고 깊게 파기에는 시간이 오래걸릴 것 같아서 대략적인 흐름만 파악하고 구현을 시작해봤다. 그리고 이 기능을 구현을 할 때, 마지막 참고자료에 적힌 분의 포스팅이 매우 큰 도움이 되었다. jwt와 spring security의 흐름을 잡기 좋았다. Session? JWT? 이번에 스프링을 배울 때, 인프런에서 김영한 님의 스프링 로드맵 중 일부를 들었는데 이때의 로그인은 쿠키&세션을 이용했었다. 그래서 프로젝트에서도 이걸 응용하면 되겠지라고 생각했었다. 그런데 우리 팀은 자체 로그인과 소셜 로그인 두 개를 모두 사용하려고 하는데, 소셜 로그인은 jwt를 이용하여 로그인이 수.. 2022. 9. 10.