An open API service indexing awesome lists of open source software.

https://github.com/rrameshbtech/axios-token-refresher

Enables your axios client to attach a valid authorization token to each of your request.
https://github.com/rrameshbtech/axios-token-refresher

Last synced: about 1 month ago
JSON representation

Enables your axios client to attach a valid authorization token to each of your request.

Awesome Lists containing this project

README

        

# axios-token-refresher

[![Build Status](https://travis-ci.org/rrameshbtech/axios-token-refresher.svg?branch=master)](https://travis-ci.org/rrameshbtech/axios-token-refresher)

This library enables your axios client to append a valid authorization token to your requests.

## How to use?

Install the package using NPM as given below.

```
npm i axios-token-refresher
```

Then add the below code into your application.

```
const wrapTokenRefresher = require('axios-token-refresher');

const formatTokenResponse = (response) => ({
{
accessToken: response.token,
expiresIn: response.expiry_duration, // in seconds
tokenType: response.token_type // "Bearer" | "Basic"
}
});

/*
This function fetches the new authorization token & returns the Promise
This function will be called by refresher to get new token whenever the existing
token is expired.
*/
const fetchAuthToken = () => axios
.get('www.auth-server.com/get/token/')
.then(response => formatTokenResponse(response.data));

/*
Optional token configurations. details below.
*/
const options = {
invalidTokenStatuses : [401, 403]
}

const axiosClientWithToken = wrapTokenRefresher(axios.create(), fetchAuthToken, options);

```

Now use `axiosClientWithToken` as like normal axios client which will take care of refreshing & attaching valid auth token with your requests.

Note: We can import types from `axios-token-refresher/types` like given below.

`import { AuthToken } from "axios-token-refresher/types";`

## Options

Options can be passed as the third parameter for `wrapTokenRefresher`. It is optional.

```
const options = {

// List of HTTP statuses which are sent by server when token is invalid.
invalidTokenStatuses : [401], // default

// Name of token header in which we send the fetched token.
tokenHeaderName: 'authorization', // default

// `buildTokenHeader` allows to decide how the token header value should be built.
buildTokenHeader: function(tokenDetails) {
return `${tokenDetails.type} ${tokenDetails.value}`
} // default
};

const axiosClientWithToken = wrapTokenRefresher(axios.create(), fetchAuthToken, options);

```

## Contribute

We welcome to contribute by adding features, fixing bugs or by creating feature requests or submitting issues.

Please contact me at [email protected] for more sugestions.

## License

This library is licensed under MIT License