# How to handle refresh token

We don't provide support for refresh token out of the box due to certain reasons and one of them is someone developers may not use refresh token in their authentication flow.

However, It's easy to add refresh token support in current implementation.

Before heading forward, we suggest you first learn what is refresh token, why it's needed and how backend/API handles it. Next, make sure you have test your refresh token API via client like Postman (opens new window).

Finally in your Vue app, all you have to do is add axios response interceptor like below:


// File: src/plugins/axios.ts

import axios from 'axios'

const axiosIns = axios.create({ ... })

axiosIns.interceptors.request.use(config => { ... })

axiosIns.interceptors.response.use(response => {
  return response
}, error => {
  const { config, response: { status } } = error
  const originalRequest = config

  if (status === 401) {
    // ❗ Make sure to change refresh token API endpoint
    return axiosIns.post('/auth/refresh-token', {
      refreshToken: localStorage.getItem('refreshToken')
    }).then(({ data }) => {
      if (data.accessToken) {

        // ❗ Make sure localStorage key matches the key/name you use on login & register
        localStorage.setItem('accessToken', data.accessToken)

        localStorage.setItem('refreshToken', data.refreshToken)

        // Update the headers with the new access token
        axiosIns.defaults.headers.common.Authorization = `Bearer ${data.accessToken}`

        // Repeat the original request
        return axiosIns(originalRequest)
      } else {
        // Handle the case where the refresh token is expired or invalid
        // You can redirect to login page, show an error message, or whatever you want to do

  return Promise.reject(error)

export default axiosIns

That's it. Your access token will auto refresh on expiration 🥳

Do note that, This is basic/common implementation of handling refresh token. You might have to update it according to your usage.