javascript - Ionic 2 - Cara menggunakan token penyegaran untuk mendapatkan JWT baru


Saya memiliki aplikasi seluler Ionic 2 yang menggunakan Json Web Tokens (JWT) untuk mengautentikasi ke berbagai rute di API node.js. JWT ini memiliki waktu kedaluwarsa yang singkat, dan perlu diperbarui menggunakan token penyegar. Token penyegar ini hanyalah string acak yang disimpan baik di database maupun di perangkat seluler. Harap dicatat: saya TIDAK menggunakan OAuth.

Bagaimana saya bisa merestrukturisasi panggilan API saya sehingga semuanya melalui satu metode yang akan mengirim token refresh jika panggilan API awal mendapatkan respons 401 Unauthorized karena JWT yang kedaluwarsa? Jika tidak, saya harus menulis logika untuk menangani respons itu di setiap panggilan API, yang ingin saya hindari.

Berikut adalah contoh dari salah satu metode yang telah saya implementasikan di TypeScript yang memanggil API. Saat ini metode ini belum menangani respons 401 Unauthorized maupun mengirim token penyegaran:

 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);
            });

        });

      });

     });
}