Coder Social home page Coder Social logo

Comments (6)

Flyrell avatar Flyrell commented on May 22, 2024 1

I'm not exactly sure what you're trying to achieve. Would you please edit your question with a code sample?

Manual ejection should be as simple as calling the following...

const refreshAuthIterceptorId = createAuthRefreshInterceptor(/* ... */);
axios.interceptors.response.eject(refreshAuthIterceptorId);

from axios-auth-refresh.

Flyrell avatar Flyrell commented on May 22, 2024 1

Well, if you emit it manually, you woudn't really need that library. But there's a bit more logic for it to work properly, as you need a queue for requests that has been dispatched while the token is refreshing, etc.

I think it might work if you move the createAuthRefreshInterceptor above the onError (so it gets called after your own $axios.onError interceptor and instead of returning Promise.reject({ error: errorObject, data: errorObject.response.data }) you'd return the Promise.reject(errorObject);. Can you try that?

createAuthRefreshInterceptor(/* ... */);
$axios.onError(async errorObject => {
    const code = parseInt(errorObject.response && errorObject.response.status);
    let message = '';
    if (code === 404) {
      message = 'Page not found';
    }
    if (code === 401) {
      return Promise.reject(errorObject);
    }

    error({ statusCode: code, message });

    return Promise.reject({
      error: errorObject,
      data: errorObject.response.data,
    });
  });

from axios-auth-refresh.

Flyrell avatar Flyrell commented on May 22, 2024

Well I think that in order to propagate the failed response to another interceptor you need to use Promise.reject(/* ... */) not just a simple return, otherwise the error is treated as handled.

So in your example...

$axios.onError(async errorObject => {
    const code = parseInt(errorObject.response && errorObject.response.status);
    let message = '';
    if (code === 404) {
      message = 'Page not found';
    }
    if (code === 422) {
      return Promise.reject({ error: errorObject, data: errorObject.response.data });
    }
   ... // other codes
    error({ statusCode: code, message }); 

    return Promise.reject({ error: errorObject, data: errorObject.response.data });
  });

Also, there might be a problem with the order in which the response interceptors are running, if that's the case, try putting the createAuthRefreshInterceptor above the $axios.onError (I'm not sure about that, just found the old thread for this one: axios/axios#1226)

from axios-auth-refresh.

niqitosiq avatar niqitosiq commented on May 22, 2024

Unfortunately, it didn't help. If I insert the createAuthRefreshInterceptor above onError handler with Promise.reject, it is working the same.
But if I insert it below, it will reproduce the error in browser:
изображение
And no refresh request will sending

from axios-auth-refresh.

niqitosiq avatar niqitosiq commented on May 22, 2024

Maybe I can emit the handler for refresh mannually? Like:

$axios.onError(async errorObject => {
    const code = parseInt(errorObject.response && errorObject.response.status);
    let message = '';
    if (code === 404) {
      message = 'Page not found';
    }
    if (code === 401) {
      startAuthRefresh(errorObject);
    }

    error({ statusCode: code, message });

    return Promise.reject({
      error: errorObject,
      data: errorObject.response.data,
    });
  });

from axios-auth-refresh.

niqitosiq avatar niqitosiq commented on May 22, 2024

Thank you very much! It worked.

from axios-auth-refresh.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.