我的 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;
}
我在玩不同的东西,但基本上,我想刷新我的令牌并在访问令牌过期时重新发送我的请求;但是,如果由于指定的角色而确实是被拒绝的请求,我不想刷新我的令牌。
有什么想法吗?