노드숙련강의 3-4

·2022년 12월 20일
0

study

목록 보기
16/81
post-thumbnail

로그인 API 구현하기

POST 메서드, /auth 경로로 요청 받을수 있도록 구현

  1. 이메일, 패스워드 값을 입력받아 데이터베이스에 있는 정보중 이메일 및 패스워드가 일치하면 로그인이 성공
  2. 로그인에 성공하면 JWT 토큰 구성 예시와 같은 방법으로 데이터를 반환
  • JWT 토큰 구성 예시
const token = jwt.sign({ userId: user.userId }, "customized-secret-key");

로그인 기능 구현

// app.js

const jwt = require("jsonwebtoken");

router.post("/auth", async (req, res) => {
  const { email, password } = req.body;

  const user = await User.findOne({ email });

  // NOTE: 인증 메세지는 자세히 설명하지 않는것을 원칙으로 한다: https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html#authentication-responses
  if (!user || password !== user.password) {
    res.status(400).send({
      errorMessage: "이메일 또는 패스워드가 틀렸습니다.",
    });
    return;
  }

  res.send({
    token: jwt.sign({ userId: user.userId }, "customized-secret-key"),
  });
});

왜 POST 메서드로 구현?

  1. 보안 관점: GET 메서드는 데이터를 URL에 표현해야 하기 때문에 보안에 취약합니다.
  2. REST API 관점: 인증 정보를 "생성"해서 받아온다고 보면 POST 메서드가 적합합니다.
profile
개발자 꿈나무

0개의 댓글