본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
공부 시작 시각 인증
수강 인증 사진
커뮤니티 피드 서비스 추가 기획 내용
기능 개요
- 인증에서는 테스트를 어떻게 만들 것인가?
- CURD 위주의 기능을 어떻게 구현할 것인가?
- 인증 기능 구현
- admin 기능 구현
- 멱등(Idempotent)키 개념 및 소개
- firebase 를 이용한 push 알람 기능 구현
인증 기능 개요
- JWT 기반 회원 가입과 이메일 기반 인증, 로그인 기능 구현
- 단, 스프링 security 없이, 단순 JWT 토큰 라이브러리만 사용해서 기능 구현
'Test Driven Development'의 약자로, 테스트 주도 개발을 의미한다.
'Acceptance Test Driven Development'의 약자로, 인수 테스트 주도 개발을 의미한다.
어드민 기능 개요
- 일별 가입 유저 수를 통해 메인 페이지의 그래프 대시 보드 기능 구현
- 유저, 게시글 리스트 테이블 기능 구현
JWT
- Json Web Token, 서버와 클라이언트 사이 통신에서 사용되는 Json 형태의 웹 토큰
- 서버의 확장성이 높고, 특정 DB나 서버에 의존하지 않아도 됨.
- 헤더, 페이로드, 서명으로 구성되어 있음.
JWT 인증 방식
- 사용자가 로그인하면 서버에서는 JWT 값을 반환함.
- 전송된 JWT는 로컬 스토리지나 쿠키에 저장됨.
- 서버로 요청할 때, 클라이언트에서 Header에 담아서 보냄.
- 토큰을 받은 서버는 서명을 확인하고 내용을 파싱해서 데이터를 사용함.
Oauth
- third-party 애플리케이션에 유저의 정보에 접근할 수 있게 하는 표준 프로토콜
- 단, 제한된 정보만 제공한다.
SignUpAcceptanceSteps.java
package org.fastcampus.acceptance.steps;
import io.restassured.RestAssured;
import org.springframework.http.MediaType;
public class SignUpAcceptanceSteps {
public static Integer requestSendEmail() {
return RestAssured
.given()
.contentType(MediaType.APPLICATION_JSON_VALUE)
.when()
.post("/signup/send-verification-email")
.then()
.extract()
.jsonPath().get("code");
}
}