DevLog

[โœ๏ธ Project Dev Log] 2022-01-04 ๋ณธ๋ฌธ

๐Ÿ“ Project - Dev Log

[โœ๏ธ Project Dev Log] 2022-01-04

Seungjae Lee 2022. 1. 4. 21:45

์˜ค๋Š˜์€ ์–ด๋–ป๊ฒŒ ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ–ˆ๋‚˜์š”?

  • token ์ธ์ฆ ๊ธฐ๋ฐ˜ ๋กœ๊ทธ์ธ ๊ตฌํ˜„
  • get/info, patch/info Api ๊ตฌํ˜„
  • ๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ, ํšŒ์›ํƒˆํ‡ด ๊ธฐ๋Šฅ ๊ตฌํ˜„

์˜ค๋Š˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ํž˜๋“  ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

  • patch/info api๋ถ€๋ถ„์€ patch์š”์ฒญ์„ ํ†ตํ•ด ํšŒ์›์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ถ€๋ถ„์ธ๋ฐ ์ˆ˜์ •์„ ์š”์ฒญํ•˜๋Š” ์ž๊ฐ€ ํšŒ์›์ธ์ง€
    ๊ฒ€์ฆํ•˜๋Š” ๋ถ€๋ถ„์ด ํ•„์š”ํ–ˆ๋‹ค ์ด ๋ถ€๋ถ„์—์„œ ์ƒ๊ธด ๊ณ ๋ฏผ์ด
    "token๊ณผ ํšŒ์›์ •๋ณด ํ™•์ธ์„ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋‘˜ ์ค‘ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•ด์„œ ํšŒ์›์ž„์„ ๊ฒ€์ฆํ•ด์•ผ ํ• ๊นŒ?"
    ์ด ๋ถ€๋ถ„ ์ด์—ˆ๋Š”๋ฐ ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•ด์„œ ๊ฒ€์ฆํ•˜์ž๋Š” ๊ฒฐ๋ก ์ด ๋‚˜์„œ ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ดค๋‹ค

์ „์ฒด ์ฝ”๋“œ์ค‘ ์ผ๋ถ€

//Todo: ํšŒ์›์ •๋ณด ์ˆ˜์ •
  patch: (req, res) => {
    // tokenVerify๋Š” ํ† ํฐ ํ•ด๋… ํ•จ์ˆ˜
    const tokenData = tokenVerify(req)

    // ํ† ํฐ ๊ฐ’์ด ์—†์„ ๋•Œ
    if (!tokenData) {
      console.log('โš ๏ธerror: No token in req.headers.authorization')
      return res.status(401).send({
        message: 'not authorized',
      })
    }
    const { username, curPassword, newPassword } = req.body
    const { email } = tokenData
    user
      .findOne({ where: { email: email, password: curPassword } }) //
      .then((data) => {
        if (!data) {
          return res.status(401).send({
            message: 'invalid password',
          })
        }
        console.log(data.dataValues)
        user
          .update({ username, password: newPassword }, { where: { email } })
          .then((result) => {
            console.log(result)
            return res.status(200).send({ message: 'patch ok' })
          })
      })
  },

์œ„์˜ ์ฝ”๋“œ์ค‘ ์ผ๋ถ€

const { username, curPassword, newPassword } = req.body;
const { email } = tokenData;
// ๋ฐ”๋””์—์„œ ๊ฐ€์ ธ์˜จ ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ํ† ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด๋…ํ•ด์„œ ๋‚˜์˜จ ์ด๋ฉ”์ผ ์ •๋ณด ๋‘๊ฐœ ๋ชจ๋‘๋ฅผ ์ด์šฉํ•ด์„œ ์ฟผ๋ฆฌ
user.findOne({ where: { email: email, password: curPassword } });
  • ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ user api ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ์— token์„ ํ•ด๋…ํ•˜์—ฌ db์™€ ๋Œ€์กฐ๋ฅผ ํ†ตํ•ด ํšŒ์›์ด ๋งž๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณค๋Š”๋ฐ,
    ๋ฌธ๋“ ๋“œ๋Š” ์ƒ๊ฐ์ด token ์‚ฌ์šฉ์˜ ์žฅ์  ์ค‘์˜ ํ•˜๋‚˜๊ฐ€ ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•œ ํ›„ ํ† ํฐ์ด ํ•ด๋…๋˜๋Š”์ง€๋งŒ ํŒ๋‹จํ•ด์„œ ๋งค๋ฒˆ db์— ํšŒ์› ๊ฒ€์ฆ์„ ์œ„ํ•œ ์กฐํšŒ๋ฅผ ํ•˜์ง€ ์•Š์•„ ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ธ๋ฐ,
    ๋‚ด๊ฐ€ ์ง  ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด token ์‚ฌ์šฉ์˜ ์žฅ์ ์ด ๋ถ€๊ฐ๋˜์ง€ ์•Š๊ฒŒ ์ž‘์„ฑ๋œ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

    => ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊ฒ€์ฆํ•˜๋Š” ๋ถ€๋ถ„๋“ค์„ ์ œ๊ฑฐํ•˜์—ฌ token ์ธ์ฆ๋ฐฉ์‹์˜ ์žฅ์ ์„ ๋ถ€๊ฐ์‹œ์ผœ ๋ด์•ผ๊ฒ ๋‹ค.

๋‚ด์ผ์€ ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋‚˜์š”?

  • oauth๊ธฐ๋ฐ˜ naver ์†Œ์…œ๋กœ๊ทธ์ธ ๊ตฌํ˜„
  • ๋„ค์ด๋ฒ„ ๋กœ๊ทธ์ธ api ๋ฌธ์„œ ๊ผผ๊ผผํžˆ ์ฝ๊ธฐ
  • ์˜๋…ผํ•  ๋ถ€๋ถ„๋“ค ๊ผผ๊ผผํžˆ ๋ฉ”๋ชจํ•˜๊ธฐ
Comments