javascript - Ionic 2 - Hur man använder uppdateringstoken för att erhålla en ny JWT


Jag har en Ionic 2-mobilapplikation som använder Json Web Tokens (JWT) för att autentisera till olika rutter på en Node.js API. Dessa JWT har en kort utgångstid och behöver uppdateras med hjälp av en uppdateringstoken. Uppdateringstoken är bara en slumpmässig sträng som lagras både i databasen och på mobila enheten. Observera: Jag använder INTE OAuth.

Hur kan jag omstrukturera mina API-anrop så att de alla går igenom en metod som skickar en uppfriskningstoken om det ursprungliga API-anropet får ett 401 Unauthorized-svar på grund av en utgången JWT? Annars måste jag skriva logiken för att hantera det svaret i varje enskilt API-anrop, vilket jag vill undvika.

Här är ett exempel på en metod jag har implementerat i TypeScript som anropar API:et. Den hanterar för närvarande inte ett 401 Unauthorized-svar och skickar inte heller refresh-token än:

 public setBeerPref(beerPrefs) {

    return new Promise((resolve, reject) => {

      this.storage.get('email').then((email) => {

        this.storage.get('token').then((token) => {

          beerPrefs["email"] = email;

          let headers = new Headers();
          headers.append('Authorization', token);
          headers.append('Content-Type', 'application/json');

          let options = new RequestOptions({ headers: headers });

          this.http.post('apiURL', beerPrefs, options)
            .subscribe(res => {
              let data = res.json();

              resolve(data);
              resolve(res.json());
            }, (err) => {
              reject(err);
            });

        });

      });

     });
}