관심(즐겨찾기) 자동차 저장 기능 구현
·
SIDE PROJECT/AUTOFINDER
2025년 3월 11일에 작성됨 사실 다른 중고차 사이트를 보면 관심 자동차를 저장하는 기능이 있어서 나도 추가해야겠다고 생각했다.단순히 이 생각이었다..그래서 그 생각을 바로 행동으로 옮기기 시작했다.그러기 위해서는 Favorite 데이터베이스 테이블을 하나 생성하고, 엔티티도 생성했다. 또한 그에 맞게 서비스 계층도 구현을 했다. 기능 구현1. 데이터베이스 테이블 설계package com.example.autofinder.model;import jakarta.persistence.*;import lombok.Getter;import lombok.Setter;@Entity@Getter@Setterpublic class Favorite { @Id @GeneratedValue(strategy..
Spring Boot + React 로그인 과정에서의 문제 해결
·
SIDE PROJECT/AUTOFINDER
2025년 3월 4일에 작성됨 스프링 부트와 리액트의 로그인 과정에서 문제가 있었다.하지만 나는 서버의 대략적인 큰 틀을 잡느라 이를 신경쓰지 않고 있었다.우선 로그인 후 userId가 undefined로 저장되는 문제가 있었다.원인은 서버가 로그인 성공 후 userId를 응답에 포함하지 않았기 때문이었다.그리고 React에서 서버 응답을 제대로 저장하지 못한 것이었다.해결 방법으로 userId를 로그인 응답에 포함하도록 백엔드 코드에서 수정했다.@PostMapping("/login") public ResponseEntity login(@RequestBody LoginRequest request) { Authentication authentication = authenticationM..
회원가입, 로그인 로직 보완 및 보안 강화
·
SIDE PROJECT/AUTOFINDER
2025년 2월 22일에 작성됨 회원가입 로직을 만들고 싶었다.사실 그래서 지금까지 그 부분들을 고려하면서 코드를 짰다.User 엔티티를 만들어놓고, 회원가입 API도 미리 만들어놨었다.또한 앞에서 포스팅한대로 로그인을 하면 JWT 토큰을 발급해서 인증하는 로그인 로직도 구현이 되어있었다.이제 백엔드에서 이를 마저 완성하고 프론트엔드에서 구현하면 되는 단계이다. 회원가입, 로그인 로직 구현package com.example.autofinder.model;import jakarta.persistence.*;import lombok.Getter;import lombok.NoArgsConstructor;import lombok.Setter;@Entity@Table(name = "users")@Getter@..
차량의 필터링(조건 검색) 기능 추가
·
SIDE PROJECT/AUTOFINDER
2025년 2월 21일에 작성됨 프로젝트에서 조회 기능까지는 구현을 했었다.이번에 구현할 필터링 기능에 대해 포스팅하겠다. 필터링(조건 검색) 기능프로젝트에 적용할 필터링 기능은 차종, 최소가격, 최대가격, 최소 주행거리, 최대 주행거리, 연식, 연료 타입, 판매 지역에 대한 필터를 적용할 것이다.차종은 우선 차량의 브랜드, 모델명 모두를 아우르는 범위로 설계를 했다. 이는 나중에 여유가 된다면 브랜드와 모델명으로 나누고 싶긴하다.최소가격, 최대가격, 최소 주행거리, 최대 주행거리는 사용자가 클라이언트(웹)에서 정수단위(Long)로 선택 가능하다.연식은 크롤링한 중고차 웹페이지에서 21/01년 이런 방식으로 표시되고 있기 때문에 이를 2021년으로 변환해야하는 과정이 필요하다. 사실 구현할 때, 이 ..
프론트엔드 연동 (React, Tailwind 적용)
·
SIDE PROJECT/AUTOFINDER
2025년 2월 21일에 작성됨 이번에는 프론트엔드 연동에 대해 포스팅하려고 한다. 사실 프론트엔드 연동에 대해 깊이 생각해본 적이 없었다. 왜냐하면 지금까지 프로젝트를 많이 하지는 않았지만 프로젝트들을 진행하면서 단순히 JavaScript, CSS, HTML 이 세 가지만 주로 다루면서 깊게 생각하지 않고 써왔기 때문이다.하지만 이번 프로젝트는 내가 직접 배우면서 제대로 시작해보고 싶었기에 다양한 프레임워크? 기술?들을 사용해보고 싶었다. 그래서 생각한 것이 React였다.결과적으로 현재 프로젝트는 React를 사용하여 개발하고 있다. React에 대한 지식이 많이 부족하긴 하지만 직접 문제점들을 겪어나가면서 배워보는 것도 나쁘지 않겠다 싶어서 무작정 만들어보고 있다. 리액트(React)그렇다면 R..
백엔드 코드 개선 및 쿼리문 수정
·
SIDE PROJECT/AUTOFINDER
2025년 2월 19일에 작성됨 크롤링을 하고 나서 저장되는 데이터들에 대해 생각해보다가 문득 차량의 가격을 크롤링 데이터에 포함하지 않았다는 생각이 들었다.추가로 데이터갱신 시간(크롤링한 데이터가 데이터베이스에 저장된 시간)도 추가했다.그래서 Car 엔티티 클래스부터 CarController, CarService, CarRepository에 대한 수정이 이루어졌다.물론 쿼리문도 수정이 필요했다. 쿼리문 수정수정한 쿼리문은 아래와 같다.CREATE TABLE cars ( id BIGINT AUTO_INCREMENT PRIMARY KEY, -- 차량 ID (자동 증가) car_type VARCHAR(50) NOT NULL, ..
JWT를 활용한 로그인 및 API 인증 처리
·
SIDE PROJECT/AUTOFINDER
2025년 2월 18일에 작성됨 지난 포스팅에서는 회원가입 로직 및 보안 설정에 관해 포스팅하였다.이제는 JWT를 활용해서 로그인 및 API 인증 처리를 구현해야한다. JWT란?JWT는 로그인한 사용자를 인증하고 정보를 안전하게 주고받을 수 있는 토큰(Token) 방식이다.일반적으로 로그인 시스템에서 세션 대신 사용되고, 무상태(Stateless) 인증 방식을 지원한다.그렇다면 JWT를 사용하는 이유는 뭘까?1. 세션 저장소 없이 사용자 인증 가능기존 로그인 방식에서는 서버가 사용자 정보를 세션에 저장해야 했다.하지만 JWT는 토큰 자체에 정보가 포함되므로 서버가 별도로 저장할 필요가 없다.이는 분산 시스템에서도 사용하기 좋다.2. 빠르고 효율적인 인증 방식세션 방식은 요청할 때마다 DB나 캐시 서버..
회원가입, 보안 로직 개발
·
SIDE PROJECT/AUTOFINDER
2025년 2월 16일에 작성됨 앞 포스팅에서는 차량에 대한 기본적인 CRUD 기능을 구현을 했다.이제 웹애플리케이션에서 활용될 회원가입 및 인증 기능과 관련된 내용을 정리해서 포스팅할 것이다.User 엔티티를 만들어야하는데 그 전에 테이블 설계부터 하도록 하겠다. User 테이블 설계CREATE TABLE users ( id BIGINT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, role VARCHAR(20) NOT..