프로젝트

문제점 메인 페이지에서 "쿠키 없음" 로그가 2번씩 찍히는 문제 발생.   Navbar에서 멤버의 정보를 가져오는 API, 쿠폰의 정보를 가져오는 API가 무조건 실행되도록 onMounted()에 걸어뒀다. Navbar.vueonMounted(() => { loadUserInfo(); loadCouponInfo(); const admin = store.getAdminRole; if (admin) isAdmin.value = true;});// 유저 정보 호출const loadUserInfo = async () => { try { const data = await apiGet("api/members"); store.updateUserInfo(data.data); } catch (err..
현재 REST API의 서비스는 유저의 추방, 탈퇴 시간과 여부를 기록하지 않는다. 즉 회원가입을 진행하면 가입 날짜, 최근 로그인 날짜만 기록하지 탈퇴와 추방에 대한 여부는 고민하지 않았다. 추가 이유 1. 유저의 탈퇴는 서비스에서 필수적이라고 생각했다. 아무래도 본인의 개인정보를 남기기 싫어하는 유저는 분명 존재할 것이기에 탈퇴 서비스를 추가하려고 한다. 2. 유저의 추방은 아무래도 GPT API를 내 개인 API 키로 사용하다보니 요금에 대한 부분을 신경쓰지 않을 수 없었다.API 요청 기록을 전부 남기기에 기록을 확인해서 비정상적인 유저를 추방시키기 위해 추가하려고 한다.  Member@Id @GeneratedValue(strategy = GenerationType.IDENTITY) privat..
위에 보이는 부분이 Navbar로 컴포넌트를 만들어두었다. 해당 Navbar는 로그인이 된 상태에서만 등장해야 하기 때문에 기존에는 App.vue에 설정을 두었다.   store에서 로그인 상태를 추출해서 로그인이 된 상태면 navbar를 보여주기 설정했었다. 문제점로그인만 성공하면 메인, 로그인페이지를 Navbar가 사라지지 않는다.    위 사진처럼 모든 화면에서 Navbar가 한번 생성되면 고정되어 따라다니는 점이 문제였다. 내가 하고 싶은 부분은 메인, 로그인, 에러 페이지에서는 Navbar 뜨지 않길 원한다.  변경 사항기존에는 App.vue에서 store의 로그인 상태를 보고 Navbar의 표시 유무를 결정했다. 그러나 store가 아닌, 해당 라우터에 showNavbar 라는 옵션을 추..
이것이 백엔드 개발이다, 객체지향의 사실과 오해 등등 책을 읽어보면서 지금의 내 코드를 보면서 코드 리팩토링을 진행해보려고 한다. 변경 기록을 블로그에 작성. 1. DIP 원칙에 맞게 의존성 변경public class MemberController { private final MemberServiceImpl userService; ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡpublic class EmailController { private final EmailServiceImpl emailSe..
@Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { log.info("jwt 필터 동작"); System.out.println(request.getRequestURI()); // 헤더에서 액세스 토큰 추출 Cookie[] cookies = request.getCookies(); // 쿠키 자체가 없으면 401 에러 발생 if (cookies == null) { log.error("쿠키 없음."); sendErrorResponse(response, HttpStatus...
(스프링부트 3.2.4로 진행됩니다) 웹소켓이라는 기술을 평소에 사용해보고 싶기도 했어서 이번 프로젝트에 한번 적용해보려고 한다. 내가 원하는 느낌은 자소설닷컴의 느낌과 비슷하다. 요런 느낌으로 로그인하면 하나의 채팅방을 통해 모두가 자유롭게 대화할 수 있는 장소를 하나 마련해보려고 한다. (학습하면서 진행하는 부분이라 다음 내용이 언제 올라갈지 모르겠습니다.) 우선 웹소켓을 사용하냐 socket.io를 사용하냐의 문제가 있었다. 그전에 간단하게 네트워크에서 어떻게 실시간 통신을 해왔는지 살펴보자. 1. Polling 일정한 주기(시간)를 가지고 서버와 응답을 주고받는 방식 웹 자체가 영구 연결이 불가능하기에 매번 주고 받아야함.(서버 부하 문제 발생) 주기가 길면 실시간성이 매우 떨어진다. 2. Lon..
관리자가 유저들의 요청 기록을 조회하는 API를 날리는데 쿼리가 이상하다. 현재 유저는 4명이 있고, 요청기록은 100만 개의 데이터가 존재. Hibernate: select arh1_0.id, arh1_0.member_id, arh1_0.method_type, arh1_0.request_content, arh1_0.request_date, arh1_0.request_status, arh1_0.response_content from api_request_history arh1_0 order by arh1_0.request_date desc limit ?, ? Hibernate: select m1_0.id, m1_0.create_date, m1_0.email, m1_0.login_last_date, m1_..
백엔드에서 유효성 검사를 위해 @Valid를 사용해서 진행 중이었는데 api 요청을 보내니 아래와 같은 에러가 발생했다. Request processing failed: jakarta.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'jakarta.validation.constraints.NotBlank' validating type 'com.park.restapi.domain.api.entity.MethodType'. Check configuration for 'methodType' at org.springframework.web.servlet.FrameworkServlet.processReq..
indeep
'프로젝트' 카테고리의 글 목록 (3 Page)