@esmkit/axios-auth-refresh
v0.1.0
Published
Axios plugin which makes it very easy to automatically refresh the authorization tokens of your clients
Maintainers
Readme
@esmkit/axios-auth-refresh
Library that helps you implement automatic refresh of authorization via axios interceptors. You can easily intercept the original request when it fails, refresh the authorization and continue with the original request, without any user interaction.
Migrated from npm package [email protected] because we need to use ESM for this package.
Features
- 🚀 High Performance: optimized for performance.
- 📦 Small Bundle Size: small bundle size.
- 🎯 Strong Type Annotations: written in TypeScript with full types support.
Installation
bun add @esmkit/axios-auth-refreshSyntax
createAuthRefreshInterceptor(
axios: AxiosInstance,
refreshAuthLogic: (failedRequest: any) => Promise<any>,
options: AxiosAuthRefreshOptions = {}
): number;Parameters
axios- an instance of AxiosrefreshAuthLogic- a Function used for refreshing authorization (must return a promise).Accepts exactly one parameter, which is thefailedRequestreturned by the original call.options- object with settings for interceptor
Returns
Interceptor id in case you want to reject it manually.
Usage
In order to activate the interceptors, you need to import a function from axios-auth-refresh
which is exported by default and call it with the axios instance you want the interceptors for,
as well as the refresh authorization function where you need to write the logic for refreshing the authorization.
The interceptors will then be bound onto the axios instance, and the specified logic will be run whenever a 401 (Unauthorized) status code is returned from a server (or any other status code you provide in options). All the new requests created while the refreshAuthLogic has been processing will be bound onto the Promise returned from the refreshAuthLogic function. This means that the requests will be resolved when a new access token has been fetched or when the refreshing logic failed.
import axios from 'axios';
import createAuthRefreshInterceptor from '@esmkit/axios-auth-refresh';
// Function that will be called to refresh authorization
const refreshAuthLogic = (failedRequest) =>
axios.post('https://www.example.com/auth/token/refresh').then((tokenRefreshResponse) => {
localStorage.setItem('token', tokenRefreshResponse.data.token);
failedRequest.response.config.headers['Authorization'] = 'Bearer ' + tokenRefreshResponse.data.token;
return Promise.resolve();
});
// Instantiate the interceptor
createAuthRefreshInterceptor(axios, refreshAuthLogic);
// Make a call. If it returns a 401 error, the refreshAuthLogic will be run,
// and the request retried with the new token
axios.get('https://www.example.com/restricted/area').then(/* ... */).catch(/* ... */);License
MIT © BILLGO. See LICENSE for details.
