サービス(Java)と通信するAngularJSを使用してSPAを構築しています。
ユーザーがユーザー名/パスを送信すると、サービスはアクセストークンと更新トークンの両方を送信します。処理しようとしています。ステータス401の応答を受け取った場合は、更新トークンを返送してから、最後のリクエストを再度送信します。 $ httpを含めてこれを実行しようとしましたが、angularではこのインターセプターに含めることができません。この応答パラメーターを使用して元のリクエストを再作成する方法はありますか?
何かのようなもの:
/ loginページへのエラーリダイレクト
'use strict';
angular.module('testApp')
.factory('authentificationFactory', function($rootScope, $q, $window, $location, CONF) {
return {
request: function(config) {
config.headers = config.headers || {};
if ($window.sessionStorage.token) {
config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
}
console.log(config);
$rootScope.lastRequest = config;
return config;
},
response: function(response) {
console.log($rootScope.lastRequest);
if (response.status === 401) {
if ($window.sessionStorage.refreshToken) {
//Save, request new token, send old response
//if it fails, go to login
$location.url('/login');
} else {
$location.url('/login');
}
}
return response || $q.when(response);
}
};
});
ボーナスの質問(メインの質問がより重要です):サービスにも接続する2つのモバイルアプリがあり、Webアプリからログインすると、モバイルアプリからしばらくすると、モバイルアプリが新しい更新トークンを取得しますそして、私のWebアプリの更新トークンはもう有効ではありません。それを処理するための最良のオプションは何でしょうか?
お時間をいただき、ありがとうございます
これを見てください: https://github.com/witoldsz/angular-http-auth 。
彼は認証後にリクエストを再生するためにバッファを使用します。