Spring Boot에서 JWT 인증 구현하기 (정리)
·
프로젝트/SnapNote
Spring Boot 프로젝트에서 JWT(Json Web Token)를 사용한 인증 기능을 어떻게 구현했는지 정리한 내용✅ 왜 JWT가 필요한가?🔒 기존 로그인 방식의 한계로그인은 성공했지만, 이후 요청들에서 사용자 정보를 알 수 없음매번 이메일/비밀번호를 보내는 것은 비효율적이고 보안상 위험🛡 JWT 도입 이유로그인에 성공한 사용자에게 서명된 토큰(JWT) 을 발급하고,이후 요청 시 토큰을 헤더에 포함시켜 사용자 인증이 가능하도록 함📦 구현 개요항목내용발급 시점로그인 성공 시 서버가 JWT 발급사용 방식클라이언트가 요청 헤더에 토큰 포함 (Authorization: Bearer {token})인증 방식커스텀 JWT 필터로 토큰 검증 후 SecurityContext에 사용자 등록🛠 1. JwtPr..
Spring Boot API 테스트 중 401 Unauthorized 에러 해결기
·
프로젝트/SnapNote
🚨 문제 상황백엔드 프로젝트에서 POST /api/signup API를 Postman으로 테스트하려고 했는데,아래와 같은 401 에러가 발생했다.HTTP 401 Unauthorizedhttp://localhost:8080/api/signup 에 JSON 바디를 담아 요청했지만, 응답으로 401이 왔다.❓ 왜 이런 에러가 났을까?Spring Security는 기본 설정 시, 모든 요청에 인증이 필요하게 구성되어 있다.즉, /api/signup, /api/login 과 같은 인증이 없어야 하는 요청도 막히는 것이다.✅ 해결 방법: Spring Security 설정에서 특정 경로만 허용하기// src/main/java/com/snapnote/config/SecurityConfig.java@Configurat..
Spring Boot 회원가입 및 로그인 구현 + Postman 테스트 기록
·
프로젝트/SnapNote
Spring Boot와 Spring Security를 사용해 회원가입 및 로그인 API를 구현하고📮 Postman으로 테스트까지 완료한 과정을 정리함 !✅ 1. 회원가입 API 구현📦 SignupRequest DTOpublic class SignupRequest { @NotBlank @Email private String email; @NotBlank private String password; @NotBlank private String nickname;}📦 SignupResponse DTOpublic class SignupResponse { private Long userId; private String message;}🧠 AuthService - 회..
SnapNote 프로젝트 개발환경 세팅기
·
프로젝트/SnapNote
1. 프로젝트 준비GitHub에 snapnote 저장소 생성README.md 작성 및 업로드 2. Spring Boot 프로젝트 생성Spring Initializr 사용주요 설정Java 17Gradle 프로젝트Dependencies: Spring Web, Spring Data JPA, MySQL Driver, Lombok, Spring Security, Redis 3. 로컬 개발환경 구성IntelliJ 설치 및 프로젝트 Import.gitignore 설정application.yml, /build, .idea, *.iml 등 무시application.yml 파일 작성DB 접속 정보 설정서버 포트 설정 4. 데이터베이스 구축Homebrew로 MySQL 설치MySQL 서버 실행: brew services st..
Mac에서 MySQL 설치 후 SnapNote용 DB 생성하기
·
프로젝트/SnapNote
🛠️ 1. MySQL 서버 시작터미널에 아래 명령어 입력:brew services start mysql"Successfully started mysql" 메시지가 출력되면 서버가 정상적으로 실행 중입니다.뜻:Homebrew가 설치해준 MySQL 서버를 Mac 컴퓨터 안에서 백그라운드 서비스로 실행시켜줘. 왜 필요할까?MySQL은 하나의 "프로그램(서버)"이기에 실행을 해야 요청을 받을 수 있음앱(Spring Boot)이 MySQL 데이터베이스랑 통신하려면 MySQL 서버가 켜져 있어야 함.추가 Tip:start = 서버 켜기stop = 서버 끄기restart = 서버 재시작🛠️ 2. MySQL 접속터미널에서 다음 명령어를 입력하여 MySQL에 접속합니다:mysql -u root설치 직후에는 비밀번호 ..