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설치 직후에는 비밀번호 ..
SentenceBERT를 활용한 심리상담 챗봇 만들기
·
프로젝트/캡스톤
1. SentenceBERT 모델 로드하기 모델을 불러오고 sentences를 넣어서 encode를 통해 문장들이 어떻게 바뀌는 지 확인해본다. 2. 데이터셋 로드(https://aihub.or.kr/opendata/keti-data/recognition-laguage/KETI-02-006) 데이터를 로드하고 head()를 통해 상위 5가지 데이터를 확인하면 챗봇에 NaN이란 데이터가 있고, Unnamed:3이라는 열이 있는 것을 볼 수 있다. 데이터 전처리를 통해 Unnamed:3 열과 널 값을 없애준다. 3. 전처리 Unnamed:3열이 없어진 것을 볼 수 있다. 널값이 다 사라짐! 4. 유저 대화내용 인코딩 유저 대화 내용을 모두 인코딩해서 판다스의 새로운 칼럼에 저장하는 과정을 거칠 것임 그리고 ..
chatgpt를 활용한 챗봇에 기능추가하기, 관련연구찾기
·
프로젝트/캡스톤
그냥 chatgpt를 연결한다고 새로운 챗봇이 되는 것은 아니니까 새로운 기능을 추가하기로 했다 ! 다양한 아이디어가 나왔는데, 이것들을 어떻게 연결할지 고민해보기로 했다. 기능 추가 아이디어 ! 1. 그냥 챗봇은 이미 많이 준비되어 있지 않나? - chatgpt는 사용자 맞춤형으로 대화를 이어나가준다... 그리고 더 업그레이드 된 인공지능? ㅎ 2. chatgpt를 그냥 사용하는 것이 아니라, 이 앞에 AI를 추가하는 것은 어떤가? - 추가적인 인공지능을 넣어서 사용자의 대화를 분석하고 필요한 데이터를 불러오기 3. 데이터는 어떻게 모을것인가? - 라이프로그 분석, 사용자의 기본 데이터-> 사용자만의 빅데이터 구축, 데이터셋 카테고리화(태그화) 4. 데이터 분석은 어떻게? - 데이터 분석 알고리즘을 찾..
주제 정하기
·
프로젝트/캡스톤
프로젝트 진행하기에 가장 중요한 작업인 주제 정하기를 한 3주 정도 소요했다. 우리 팀은 3명이기에 3명이서 각자 하나씩 아이디어를 생각해와서 ppt로 발표자료를 만들고 주제를 선정하기로 했다. 나는 병원 내 약제 배송시스템을 준비했는데 네이버 1784 내 자율주행 로봇? 들을 보고 아이디어를 생각했다. 이런 기능들을 가지고 있었다. 하지만 이미 있는 .. 기능이라서 탈락 ! 다른 팀원들은 chatgpt를 활용한 챗봇, 시니어를 위한 공유정보 어플 이렇게 준비해왔다. 그중 가장 괜찮은 아이디어는 chatgpt를 활용한 챗봇이라고 생각해서 이것을 주제로 잡았다 ! (두둥) 일단 신기술인 chatgpt도 활용하고,, 암튼 그래서 이걸 정했따.