Project/Project01.MailBuddy 6

일반 폼로그인(세션) → JWT 연동 프로세스

한 줄 요약예전:Spring Security formLogin() + HttpSession 기반 인증서버가 세션을 들고 있고, 브라우저는 JSESSIONID 쿠키로만 인증프론트/백이 한 몸(같은 도메인 기준)일 때 편하지만, S3 + EC2 분리, JWT 기반 SPA에는 안 어울림지금:/api/auth/login 에서 JWT 발급 → 프론트(localStorage)에 저장이후 모든 요청에 Authorization: Bearer 헤더로 인증서버는 완전 stateless(세션 안 들고 있음)구글 OAuth는 “연동용”으로만 사용, 연동 결과는 User 엔티티에 저장해서 JWT 유저랑 연결 백엔드에서 어떻게 바뀌었는지 # 로그인 방식: 폼 로그인 → JWT 로그인 (1) 예전: formLogin + Http..

detail , summary 이용 FAQ 페이지 구현

/ HTML 기본 요소 중 하나, 제목 내용 내용 내용... 브라우저가 자동으로제목(summary) 부분은 항상 보이게 하고그 아래 내용은 접힌 상태로 숨겨두었다가사용자가 제목을 클릭하면 열렸다 닫혔다 하는 토글 UI를 만들어줌 어떻게 동작 할까? 기본 상태 : 가 닫힌 상태 → summary만 보이고 답변은 숨김 유저가 summary 영역 클릭→ 브라우저가 자동으로 상태로 바꿈 → 안쪽 내용( ...)이 화면에 나타남 다시 한 번 클릭 → open 제거 → 또 접힘 질문 답변 질문 답변 구현해보기 Q. {item.q} A. {item.a} :하나의 Q&A 아이템 전체를 감싸는 컨테이너열림/닫힘 상태를 내부적으로 갖고 있음 (open 속성) :..

React 전역 상태 디버깅: selectedItem null 오류 해결

문제 상황Cannot read properties of null (reading 'type')TypeError: Cannot read properties of null (reading 'type') at onEdit (CalendarWriteForm.js:xx)Memo 영역에서 “날짜 없는 일정”을 선택하고 → “수정” 버튼을 누르면CalendarWriteForm 팝업이 열리고 , 기존 제목/내용/장소 등은 잘 채워진다.그런데 수정 후 “수정” 버튼을 누르면 저장이 안 되고 에러가 난다. # 콘솔 에러Cannot read properties of null (reading 'type')TypeError: Cannot read properties of null (reading 'type') at ..

앵커 이용 Guide_Nav 만들어서 해당 section 이동

# 사용 가이드 페이지 구현const GUIDE_NAV = [ { id: "start", label: "시작하기" }, { id: "mail-to-schedule", label: "메일 → 일정 변환" }, { id: "calendar", label: "캘린더 사용법" }, { id: "todo", label: "할 일(Todo)" }, { id: "addressbook", label: "주소록" },];function Guide() { return ( {/* 상단 헤더 */} 사용 가이드 ... {/* 상단 빠른 이동 메뉴 */} {GUIDE_NAV.map..

Gmail 연동 중복 에러 처리

이미 연동한 Google Id 다른 아이디에 연동 시도시 에러페이지 이동 해결해보기 # 다른 아이디를 회원가입해서 연동시도 시 보여지는 에러페이지 원인 : 왜 에러가 나지? @Column(unique = true) private String googleEmail; // 구글 이메일 연동→ User 엔티티 - googleEmail에 Unique 제약 연동 흐름보기 - CustomOAuth2UserService // 구글 OAuth 로그인 시 세션 username으로 DB 회원찾아 구글 이메일 저장하는 서비스public class CustomOAuth2UserService extends DefaultOAuth2UserService { @Autowired private UserRepositor..