[Node.js] Issue28_설계 변경 후 회원가입 기능 #2 인증을 위한 토큰문제점이메일 인증시 사용되는 사용자 구분 데이터를 JWT 토큰으로 사용했다. 하지만 인증을 위해 사용되는 토큰은 일반적으로 한 번만 사용되고, 사용된 이후에는 무효화가 되어야 한다. 또한 쿼리스트링을 사용해서 URL에 토큰이 직접 보여지는 방법은 보안에 취약할 수 있다. 쿠키, 매우 짧은 토큰 유효 기간, 외부 인증 서비스, 인증 코드 입력 방법 등 다양한 해결책이 존재하지만 기존 방식을 그대로 사용하면서 문제를 해결하기 위해 일회용 토큰을 따로 생성해서 사용하는 방법으로 해결하려고 한다. 프로세스는 다음과 같다.회원 가입 시 일회용 코드를 생성하고 redis를 사용하여 token-email로 저장한다.redis의 setex를 사용하여 유지 기간을 설정한다.인증 메일 쿼리스트링 데이터로 ..
[Node.js] Issue28_설계 변경 후 회원가입 기능 #1 요구사항닉네임 자동 생성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 }, // 작성 시간을 저장하는 필드..
[Baekjoon] 백준 6064 카잉달력 6064번 카잉달력 문제 풀이 문제 최근에 ICPC 탐사대는 남아메리카의 잉카 제국이 놀라운 문명을 지닌 카잉 제국을 토대로 하여 세워졌다는 사실을 발견했다. 카잉 제국의 백성들은 특이한 달력을 사용한 것으로 알려져 있다. 그들은 M과 N보다 작거나 같은 두 개의 자연수 x, y를 가지고 각 년도를 와 같은 형식으로 표현하였다. 그들은 이 세상의 시초에 해당하는 첫 번째 해를 로 표현하고, 두 번째 해를 로 표현하였다. 의 다음 해를 표현한 것을 이라고 하자. 만일 x < M 이면 x&#39; = x + 1이고, 그렇지 않으면 x&#39; = 1이다. 같은 방식으로 만일 y < N이면 y&#39; = y + 1이고, 그렇지 않으면 y&#39; = 1이다. 은 그들 달력의 마지막 해로서, 이 해에 세상의 ..
[Baekjoon] 백준 1107번 리모컨 1107번 리모컨 문제 풀이 문제 수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는 바람에, 일부 숫자 버튼이 고장났다. 리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고있는 채널에서 +1된 채널로 이동하고, -를 누르면 -1된 채널로 이동한다. 채널 0에서 -를 누른 경우에는 채널이 변하지 않고, 채널은 무한대 만큼 있다. 수빈이가 지금 이동하려고 하는 채널은 N이다. 어떤 버튼이 고장났는지 주어졌을 때, 채널 N으로 이동하기 위해서 버튼을 최소 몇 번 눌러야하는지 구하는 프로그램을 작성하시오. 수빈이가 지금 보고 있는 채널은 100번이다. 입력 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. ..
[Baekjoon] 백준 1699 제곱수의 합 1699 제곱수의 합 문제 풀이 문제 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데 ,11의 경우 11=22+22+12+12+12(5개 항)도 가능하다. 이 경우, 수학자 숌크라테스는 “11은 3개 항의 제곱수 합으로 표현할 수 있다.”라고 말한다. 또한 11은 그보다 적은 항의 제곱수 합으로 표현할 수 없으므로, 11을 그 합으로써 표현할 수 있는 제곱수 항의 최소 개수는 3이다. 주어진 자연수 N을 이렇게 제곱수들의 합으로 표현할 때에 그 항의 최소개수를 구하는 프로그램을 작성하시오 입력 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000) 출력 주어진 자연수를 제곱수의 ..