룰루랄라 코딩기록장
인증을 위한 토큰 문제점 이메일 인증시 사용되는 사용자 구분 데이터를 JWT 토큰으로 사용했다. 하지만 인증을 위해 사용되는 토큰은 일반적으로 한 번만 사용되고, 사용된 이후에는 무효화가 되어야 한다. 또한 쿼리스트링을 사용해서 URL에 토큰이 직접 보여지는 방법은 보안에 취약할 수 있다. 쿠키, 매우 짧은 토큰 유효 기간, 외부 인증 서비스, 인증 코드 입력 방법 등 다양한 해결책이 존재하지만 기존 방식을 그대로 사용하면서 문제를 해결하기 위해 일회용 토큰을 따로 생성해서 사용하는 방법으로 해결하려고 한다. 프로세스는 다음과 같다.회원 가입 시 일회용 코드를 생성하고 redis를 사용하여 token-email로 저장한다.redis의 setex를 사용하여 유지 기간을 설정한다.인증 메일 쿼리스트링 데이터..
요구사항닉네임 자동 생성userService .js→ 닉네임 생성 관련 메서드회원 가입메일 인증 구현_config/email.js메일 인증 프로세스메일 인증 구현 중 문제점 발생ServerClient(api/axios.js)요구사항닉네임 자동 생성이메일 회원가입 기능 추가이메일 인증닉네임 자동 생성회원 가입시 형용사 및 명사가 작성된 엑셀 데이터와 숫자를 조합하여 닉네임을 자동으로 생성시켜준다.userService .js→ 닉네임 생성 관련 메서드path : 상대경로를 절대경로로 만들기 위한 모듈xlsx : 엑셀 파일을 컨트롤 하기 위한 모듈. const xlsx = require('xlsx'); const path = require('path'); 닉네임은 형용사와 동물이름, 0~99999 범위의 숫자..
요구사항공통 데이터 무결성 유지를 위한 미들웨어 추가.SchemaUser// user.js const userSchema = mongoose.Schema({ email: { type: String, required: true, lowercase: true, unique: true }, password: { type: String, required: true }, nickname: { type: String, minLength: 1, maxLength: 100, required: true }, kakaoId: { type: String, required: true, unique: true }, createdAt: { type: Date, default: Date.now }, // 작성 시간을 저장하는 필드..