Programming/React

[ React ] JWT ํ† ํฐ

seulye 2024. 8. 22. 08:44

 

1. ๋กœ๊ทธ์ธ ํ•  ๋•Œ ํ† ํฐ์„ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ

 const onClickLogin = (event) => {
    event.preventDefault();
    axios
      .post(`/api/comm/user/signin`, {
        id: id,
        password: pw,
      })
      .then((response) => {
        console.log(response);
        localStorage.clear();
        localStorage.setItem("token", response.data.token);
        navigate("/");
      })
      .catch((error) => {
        console.log(error);
      });
  };

 

๋ฐฑ์—”๋“œ์—์„œ data์— id, token, verified๋ฅผ ๋‹ด์•„ ๋ณด๋‚ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, token์„ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•ด์ค€๋‹ค. 

๋กœ๊ทธ์ธ์ด ์„ฑ๊ณตํ•˜๋ฉด ์ดˆ๊ธฐํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค. 

 

token์„ ์ €์žฅํ•ด์ฃผ์—ˆ์œผ๋‹ˆ, ์ด์ œ api ๋‚ ๋ฆด ๋•Œ token ํ™•์ธํ•ด์ค˜์•ผํ•œ๋‹ค. 

 

 

2. token์„ ์š”์ฒญ์˜ ํ—ค๋”์— ๋‹ด์•„์„œ ์ „๋‹ฌ 

import axios from "axios";

const TOKEN = localStorage.getItem("token");

// axios ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
const axiosServices = axios.create({
  baseURL: "http://localhost:3000",
  headers: {
    "Content-Type": "application/json",
    Authorization: `${TOKEN}`,
  },
});

// ์š”์ฒญ ์ธํ„ฐ์…‰ํ„ฐ
axiosServices.interceptors.request.use(
  (config) => {
    // ํ—ค๋”์— ์—‘์„ธ์Šค ํ† ํฐ ๋‹ด๊ธฐ
    const token = localStorage.getItem("token");
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

export default axiosServices;

https://klloo.github.io/react-login-jwt/

 

๋ฆฌ์•กํŠธ์—์„œ jwt ๊ธฐ๋ฐ˜ ๋กœ๊ทธ์ธ ๊ตฌํ˜„ํ•˜๊ธฐ

โ€ฆ

klloo.github.io

 

3. ํ˜ธ์ถœ

import axiosServices from "../../../utils/axios";

(์ƒ๋žต)

const onClickSearch = (event) => {
    axiosServices
      .get(`/api/stock/code/${stckNm}`)
      .then((response) => {
        setCodeList(response.data);
      })
      .catch((error) => {
        console.log(error);
      });
  };

 

axios ํ˜ธ์ถœํ–ˆ๋˜๊ฑฐ๋ž‘ ๋˜‘๊ฐ™์ด ํ˜ธ์ถœํ•ด์ฃผ๋ฉด ๋œ๋‹ค.