Skip to content

Latest commit

 

History

History
117 lines (75 loc) · 3.71 KB

File metadata and controls

117 lines (75 loc) · 3.71 KB

주제

은둔형 청년을 위한 커뮤니티

작동 방식


주차 별 계획

1주차: 앱 기획 목표 수립, 요구사항 분석 및 역할 분담

2주차: 핵심 기능 정의 확정 및 초기 설계 작업

3주차: API 연동 설계 및 연동 준비 작업

4주차: 프론트–백엔드 API 연동 및 데이터 전처리

5주차: 회원가입 및 로그인 기능 완성, 인증 시스템 구축

6주차: 커뮤니티 모집글(소모임/소통글) 등록 및 조회 기능 구현

7주차: 게시글 상세 보기 및 1:1 매칭/참여 신청 기능 구현

8주차: 댓글/대댓글 기능 구현 및 연동

9주차: 실시간 소통 기능 고도화 및 안정성 테스트

10주차: 전체 기능 통합 테스트 및 오류 대응 시스템 구축

11주차: 사용자 피드백 수집 및 서비스 안정성 강화

12주차: 서비스 최적화 및 오류 최소화

13주차: 앱 최종 점검 및 사용자 테스트 수행


요구사항


사용자 인증 시스템 명세서

spring security랑 JWT를 이용한 토큰 기반의 인증 방식으로 설계
반환 메시지는 사용자 요청에 맞게 고려하여 정한다.


로그인 요구사항 및 로직

  1. 로그인 요청
    사용자가 ID와 패스워드를 입력하고 로그인 버튼을 클릭하면,
    클라이언트는 서버의 로그인 API (예: POST /api/auth/login)로 요청을 전송한다.

  2. 사용자 조회

    • Spring Security의 UserDetailsService는 요청된 ID를 기반으로 DB에서 사용자 정보를 조회한다.
    • ID가 존재하지 않으면 인증 실패(401 Unauthorized)와 메시지를 반환한다.
  3. 패스워드 검증

    • 사용자가 존재할 경우, PasswordEncoder가 입력된 패스워드와 DB 저장 암호화 패스워드를 비교한다.
    • 불일치 시, 인증 실패 메시지를 반환한다.
  4. 인증 성공 처리

    • 패스워드 검증 성공 시, 인증 완료.
    • 서버는 사용자 정보를 기반으로 Access Token과 Refresh Token(JWT)을 생성.
    • 생성된 토큰을 ResponseBody로 전달하고, 클라이언트는 이를 저장·관리한다.

회원가입

  • 필수 필드: 이름, 휴대폰 번호, ID, 패스워드, 패스워드 재확인
  • 선택 필드: 주소

아이디 중복 확인 (실시간 검증 API)

  • 클라이언트에서 GET /api/users/check-id?id={userId} 호출.
  • 성공: "사용 가능한 아이디입니다."
  • 실패: "이미 존재하는 아이디입니다."

서버 검증 항목 (회원가입 요청 시)

  • 필수 필드 비어있지 않은지 확인.
  • 고유값(ID, 휴대폰 번호) 중복 여부 확인.
  • 패스워드와 패스워드 재확인 값 일치 여부 확인.

회원가입 로직

  1. 회원가입 요청

    • 사용자가 모든 정보를 입력 후 POST /api/users/signup 요청 전송.
  2. 유효성 검증

    • 실패 시: 사유와 함께 400 Bad Request 반환.
  3. 패스워드 암호화

    • PasswordEncoder (예: BCryptPasswordEncoder)로 패스워드 암호화.
  4. DB 저장

    • 해시된 패스워드를 포함해 사용자 정보를 DB에 저장.
  5. 성공 응답

    • 201 Created 반환.

채팅 서버

`

  • 통신 프로토콜: websocket 또는 sockjs 사용.
  • 메시징 프로토콜: stomp 사용.
  • 실시간성 보장: Redis 사용.

채팅 요구사항

  • 채팅방 생성 가능.
  • 생성된 채팅방 목록 확인 가능.
  • 채팅방 이름 클릭 시 입장 가능.
  • 채팅방에서 메시지 전송 및 수신 가능.
  • 사용자 간 양방향 통신 보장.
  • 채팅방은 일정 간격으로 자동 새로고침 → 실시간 갱신.