我有一个离子2移动应用程序,它使用Json Web Tokens(JWT)对node.js API上的各种路由进行身份验证。这些JWT的到期时间很短,需要使用刷新令牌进行刷新。刷新令牌只是一个随机字符串,存储在数据库和移动设备上。请注意:我不使用OAuth。
如何重构我的API调用,以便它们都通过一个方法,如果初始API调用由于过期的JWT而获得401 Unauthorized响应,则会发送刷新令牌?否则,我将需要编写用于在每个API调用中处理该响应的逻辑,我希望避免这种情况。
这是我在调用API的typescript中实现的一个方法的示例。它目前没有处理401 Unauthorized响应,也没有发送刷新令牌:
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);
});
});
});
});
}