私はちょうど vue と vue リソースから始めました。バックエンドでは、jwt トークンを処理する laravel を使用しています。トークンはリクエストごとに更新されます。これまでのところ、これは 1 つの状況を除いてうまく機能します: 以下のような vue リソースを使用して 2 つのリクエストを続けて送信した場合:
//first request
Vue.http.get('/api/runs').then((response) => {
return response.json();
}, (response) => {
console.log(response);
this.$set('error', {'status' : response.status, 'error': response.statusText});
});
//second request
Vue.http.get('/api/meta').then((response) => {
return response.json();
}, (response) => {
console.log(response);
this.$set('error', {'status' : response.status, 'error': response.statusText});
});
最初のリクエストのみが有効なトークンを持ちます。インターセプターを介してトークンを設定しています:
Vue.http.interceptors.push((request, next) => {
request.headers['Authorization'] = Auth.getAuthHeader();
request.emulateJSON = true;
next(function(response) {
if(response.headers['Authorization']) {
var token = response.headers['Authorization'];
localStorage.setItem('jwt-token', token);
}
});
});
これは、インターセプターが新しい jwt トークンを設定する前に、両方のリクエストが並行して起動されるためです。だから私の質問は、最初のリクエストが完全に終了するまで2番目のリクエストを強制する方法、またはインターセプターを強制的に待機させる方法です。