[Vuejs]-How to manage authentication of a user through a vue router and a server-provided JWT token?

0👍

Use Axios Interceptors:

import { defaults, get } from 'lodash';
import axios from 'axios';
import store from 'vuex-store';
import def from './default';

export const connection = (options = {}) => {
  def.headers = { Authorization: store.getters.auth.getToken() };
  const instance = axios.create(defaults(def, options));

  instance.interceptors.response.use(
    function (response) {
      const newtoken = get(response, 'headers.authorization');
      if (newtoken) store.dispatch('setToken', newtoken);
      console.log(response.data);
      return response;
    },
    function (error) {
      switch (error.response.status) {
        case 401:
          store.dispatch('logoff');
          break;
        default:
          console.log(error.response);
      }
      return Promise.reject(error);
    }
  );

  return instance;
};

Leave a comment