Skip to content

localStorage.getItem ์—๋Ÿฌ

Jin Young Park edited this page Dec 1, 2020 · 1 revision

localStorage setItem, getItem ์—๋Ÿฌ

App.vue์—์„œ ์œ ์ € ์ธ์ฆ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋กœ์ง์„ ์งฐ๋‹ค.

export default {
  name: "App",
  data: () => ({
    //
  }),
  created() {
    // token ์ €์žฅ
    // eslint-disable-next-line no-unused-vars
    const [_, accessToken] = location.search.split("token=");
    if (accessToken) {
      store.dispatch("setToken", { accessToken });
      location.replace("/");
      return;
    }

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

    if (!token) {
      router.replace("/login").catch(() => {});
      return;
    } else if (token) {
      store.dispatch("checkUser");
      return;
    }
  },
  mounted() {},
};
</script>

oAuth ์„œ๋ฒ„์—์„œ URL query๋กœ token์„ ๋„˜๊ฒจ์ฃผ๋ฉด token์„ localStorage์— ์ €์žฅํ•˜๊ณ  ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•ด์„œ ์ €์žฅ๋œ token์œผ๋กœ ์œ ์ €์ธ์ฆ์„ ํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ location.replace('/') ํ›„์— user api ํ†ต์‹ ์ด Unauthorized error๊ฐ€ ๋‚˜๊ณ  ๋‹ค์‹œ ํ•œ๋ฒˆ user api ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์กŒ๋‹ค(์ด๋•Œ๋Š” ์„ฑ๊ณต).

์›์ธ์„ ๋ถ„์„ํ•ด๋ณด๋‹ˆ location.replace("/") ํ›„ ์•„๋ž˜ ๋‚จ์•„์žˆ๋Š” ์ฝ”๋“œ๋“ค์„ ์ฝ์–ด์„œ ๊ทธ๋Ÿฐ๊ฒƒ!

๊ทผ๋ฐ dispatch('checkUser')๋ฅผ ํ•ด์คฌ์œผ๋ฉด token์ด ๋“ค์–ด๊ฐ”๋‹ค๋Š” ๊ฑด๋ฐ ์™œ ์—๋Ÿฌ๊ฐ€ ๋‚ ๊นŒ?

๋‹ต์€ axios headers ์„ค์ •์— ์žˆ์—ˆ๋‹ค.

๋งค๋ฒˆ header๋กœ token์„ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์„ ๋ชจ๋“ˆํ™”ํ•˜๊ธฐ ์œ„ํ•ด myAxios๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ–ˆ๋‹ค.

const headerConfig = {
    headers: {
        Authorization: "Bearer " + localStorage.getItem('token')
    },
};

const BASE_URL = process.env.VUE_APP_SERVER_URL;

const myAxios = {
  GET: (path) => {
    return axios.get(BASE_URL + path, headerConfig());
  }, ...
};

์ด๋•Œ headerConfig๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์‹œ์ ์ด token์„ ์ €์žฅํ•œ ์ด์ „์‹œ์ ์ด๋ผ header์— token์ด null๋กœ ๋‹ด๊ธฐ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

headerConfig๋ฅผ ๋™์ ์œผ๋กœ(?) ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ํ™”ํ•˜๊ณ  ๋‚˜๋‹ˆ getItem์‹œ์ ์ด token ์ €์žฅ ์ดํ›„ ์‹œ์ ์ด ๋˜์—ˆ๊ณ  ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘์ด ๋˜์—ˆ๋‹ค.

const getToken = () => localStorage.getItem("token");

const headerConfig = () => {
  return {
    headers: {
      Authorization: "Bearer " + getToken(),
    },
  };
};

์•ฝ 2์‹œ๊ฐ„ ์‚ฝ์งˆ์„ ํ–ˆ์ง€๋งŒ ๊ทธ๋ž˜๋„ ํ•ด๊ฒฐํ•ด์„œ ๋ฟŒ๋“ฏ ^&^

Clone this wiki locally