Comments (2)
Well, this happens because when the token is refreshed, the last request is just retried from the error configuration that axios provides. It does not trigger any logic as it was already triggered before making the first request.
const data = await axios.get(`http://someUrl/check_token?token=${getToken()}`);
/**
* Before running the actual axios.get method, the above line gets evaluated to:
* const data = await axios.get('http://someUrl/check_token?token=some-token');
*/
/**
* The call returns 401, so the library takes it from here...
* 1. `refreshAuthLogic` function gets called
* 2. After refreshing, the error config (with the previously evaluated URL) gets called again.
* As the token is not bound dynamically, the URL still has the old token as the query parameter.
*/
There is few ways (I can think of) you can accomplish what you're looking for:
- Use interceptor to bind the token as a query parameter dynamically. Although it would work, it might be a bit too much logic for what you're trying to accomplish, especially when it's only for one request (as it runs before every request).
const data = await axios.get('http://someUrl/check_token?token={token}');
axios.interceptors.request.use(config => config.params.token = getToken());
- In the
refreshAuthLogic
function there is an error object available for you. You can replace the query parameters after refreshing the token.
// Library initialization
createAxiosAuthRefresh(axios, async (errorConfig) => {
const response = await axios.post('https://someUrl/refresh_auth');
setToken(response.data.token); // this would be your usual logic to set the token globally
errorConfig.params.token = response.data.token; // this would replace the parameters in the retried requrest
});
const data = await axios.get(`http://someUrl/check_token?token=${getToken()}`);
I haven't tested any of this, but it should work with a little bit of polishing. At least I hope you get the idea. I think the second option is the good way to accomplish what you're trying to, you just need to figure out how to alter the error config.
from axios-auth-refresh.
Hope that helped. Please, use StackOverflow for the future implementation related questions 🤓
from axios-auth-refresh.
Related Issues (20)
- should refresh HOT 2
- response.use will enter twice when retry HOT 2
- Implementation example HOT 1
- onRetry never firing HOT 5
- How to handle a 401 "Refresh token is invalid" error HOT 2
- Request is not being re-triggered after re-auth HOT 2
- Document whether all interceptors are rerun after refresh HOT 1
- Each call is getting duplicated HOT 1
- Interceptors fail to assign new token on second failure HOT 2
- Docs: Provide example for server-side axios requests nuxt HOT 1
- multiple axios instance. don't need to reqeuest refresh api multiple times
- Retry of the original request fails only if GET request HOT 4
- Axios auth refresh doesn't work with axios v1.1.3 HOT 7
- Resend request with multipart/formdata
- async shouldRefresh
- combine refresh token logic with another axios response interceptor
- Multiple Request Pause is not working HOT 2
- import('axios-auth-refresh') wraped with default HOT 2
- Problem using axios-auth-refresh with react-query HOT 2
- React Native 0.72.1 ? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from axios-auth-refresh.