0

私はちょうど 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番目のリクエストを強制する方法、またはインターセプターを強制的に待機させる方法です。

4

1 に答える 1