티스토리 뷰
휴대폰에 온 인증번호를 입력 후 인증 완료 버튼을 누르면 실행되게 한다.
signup.js
// 핸드폰 인증 완료 API 요청
const submitToken = async () => {
console.log("핸드폰 인증 API");
let phone = "";
for (let i = 1; i <= 3; i++) {
phone += String(document.getElementById(`PhoneNumber0${i}`).value);
}
let token = "";
token += String(document.getElementById(`TokenInput`).value);
axios.patch(`http://localhost:3000/tokens/phone`, {
phone : phone,
token : token
});
};
입력받은 휴대폰 번호와 토큰(인증 번호)를 받는다. patch로 둘을 보낸다.
백엔드 index.js
import express from "express";
import swaggerUi from "swagger-ui-express";
import swaggerJsdoc from "swagger-jsdoc";
import dotenv from "dotenv";
import mongoose from "mongoose";
import cors from "cors";
import { options } from "./swagger/config.js";
import { TokenController } from "./controllers/token_controller.js";
import { UsersController } from "./controllers/users_controller.js";
import { StarbucksController } from "./controllers/starbucks_controller.js";
const app = express();
app.use(express.json());
app.use(cors());
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(swaggerJsdoc(options)));
dotenv.config();
const tokenController = new TokenController();
app.get("/tokens/phone", tokenController.getToken);
app.post("/tokens/phone", tokenController.postToken);
//===========================================================
app.patch("/tokens/phone", tokenController.patchToken); // <===== 휴대폰 번호, 토큰을 여기로 받는다.
//===========================================================
const usersController = new UsersController();
app.get("/users", usersController.getUsers);
app.post("/users", usersController.postUsers);
const starbucksController = new StarbucksController();
app.get("/starbucks", starbucksController.getStarbucks);
mongoose.connect("mongodb://my_database:27017/codecamp");
app.listen(3000);
백엔드에서 /tokens/phone의 엔드포인트(주소줄)에 폰번호, 토큰이 들어온다.
tokenController.patchToken을 들어가서 자세히 알아보자
왜 함수인데 tokenController.patchToken()이 아닌 tokenController.patchToken인가?
js에서 함수도 일종의 객체이다. 따라서 객체로 쓸 수 있으며, 만약 patchToken()으로 쓴다면 바로 '실행'이 되어버린다.
자세히 공부해야 하는 부분이다.
token_controller.js 중에서
class TokenController
patchToken = async (req, res) => {
const phone = req.body.phone;
const token = req.body.token;
//! 핸드폰 번호 이미 저장됐는지 확인
const tokenPhone = await Token.findOne({ phone: phone });
// 토큰자체가 디비에 없다면
if (!tokenPhone) {
res.status(422).send("휴대폰 인증하세요.");
return;
}
//! 발급한 토큰과 일치하는지 확인
if (tokenPhone.token !== token) {
console.log(tokenPhone);
res.status(422).send("토큰 인증이 올바르지 않습니다.");
return;
} else {
console.log(tokenPhone);
await Token.updateOne({ phone: phone }, { isAuth: true });
res.send(true);
return;
}
}
받은 휴대폰번호로 디비에 그 폰번호가 있는지 확인하고 있다면 그 폰번호의 토큰을 가져온다.
만약 입력한 인증번호와 DB인증번호가 다르다면
토큰 인증이 올바르지 않습니다.
아니라면 isAuth(토큰 인증이 됐는지 확인하는 객체) true로 반환하고
res.send(true)를 반환한다.
'개발자 > 미니프로젝트 rest-api' 카테고리의 다른 글
6. 스타벅스 커피목록 10개 크롤링해서 화면에 보여주기 (0) | 2022.01.26 |
---|---|
5. 프론트에 회원가입버튼 알아보기 (0) | 2022.01.26 |
3. 프론트에서 휴대폰 번호를 백엔드로 보내기 (0) | 2022.01.25 |
2. 프론트 안에서 회원가입정보 axios활용해서 백엔드로 보내기 (0) | 2022.01.25 |
1. 만들기 전에 요약 (0) | 2022.01.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Rest
- 콜백
- 공부법
- yarn
- 에러
- 백틱
- Callback
- js
- axios
- typeorm
- 코딩습관
- 호이스팅
- error
- Playground
- GraphQL
- Spread
- docker
- postman
- elasticsearch
- 독커
- 코드캠프
- 도커
- function
- NPM
- 명령어
- nodemon
- Console
- arrowfunction
- arrow
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함