私のAngularアプリケーションは、記事シリーズhttp://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-netで概説されているように、ベアラートークンを利用しています-アイデンティティ/ . アクセストークンの有効期限が切れたときに(401 httpコードを介して)トークンをシームレスに更新するために、フォークされた例に従いました。
私の質問は、決定された役割に基づいて、ベアラートークンが期限切れか、単に無許可かをどのように判断できるかということです.
たとえば、私の Web API メソッドには属性 [Authorize(Roles="Admin")] があります。それを呼び出すと、予想される 401 エラーが返されます。ただし、アクセス トークンの有効期限が切れて別の Web API メソッド呼び出しを行うと、401 エラーも返されます。インターセプターの responseError ハンドラーは次のとおりです。
responseError: function (rejection) {
var deferred = q.defer();
if (rejection.status === 401) {
var authService = $injector.get('authService');
authService.refreshToken().then(function (response) {
_retryHttpRequest(rejection.config, deferred);
}, function () {
authService.logOut();
$location.path('/dashboard');
deferred.reject(rejection);
});
} else {
deferred.reject(rejection);
}
return deferred.promise;
}
私はさまざまなことをいじっていましたが、基本的には、アクセストークンの有効期限が切れたときにトークンを更新してリクエストを再送信したいと思います。ただし、指定された役割のために本当に拒否されたリクエストである場合、トークンを更新したくありません。
何かご意見は?