Asp.net 频繁刷新访问令牌的影响

Asp.net 频繁刷新访问令牌的影响,asp.net,angularjs,authentication,asp.net-web-api,owin,Asp.net,Angularjs,Authentication,Asp.net Web Api,Owin,在.NETWebAPI2服务器上,我使用OWIN进行身份验证。我遵循并成功实现了访问令牌刷新机制 我想知道如果客户端频繁刷新其访问令牌(例如,平均每5分钟刷新一次),是否会对任何事情产生影响 我问这个问题是因为我的页面上有一个按钮,当用户单击它时,该页面上的数据将发送到不同的端点。这些端点用属性[Authorize]标记 以前,当我向单个受保护端点发送请求时,我可以检查响应是否为401(未经授权)。如果是这样,我可以先刷新用户的访问令牌,然后用新令牌重新发送被拒绝的请求。然而,我不知道这次怎么做

在.NETWebAPI2服务器上,我使用OWIN进行身份验证。我遵循并成功实现了访问令牌刷新机制

我想知道如果客户端频繁刷新其访问令牌(例如,平均每5分钟刷新一次),是否会对任何事情产生影响

我问这个问题是因为我的页面上有一个按钮,当用户单击它时,该页面上的数据将发送到不同的端点。这些端点用属性
[Authorize]
标记

以前,当我向单个受保护端点发送请求时,我可以检查响应是否为
401(未经授权)
。如果是这样,我可以先刷新用户的访问令牌,然后用新令牌重新发送被拒绝的请求。然而,我不知道这次怎么做同样的事情,因为一次发送的请求太多了。上述方法在我的AngularJS拦截器中实现。它可以处理单个但不是多个被拒绝的未经授权的请求

仅供参考,这是我的拦截器的代码,可以从中找到并修改


通常,在用户代理中处理刷新令牌不是一个好主意。OAuth2将隐式授权(不发出刷新令牌)定义为应该用于用户代理应用程序的流是有原因的。AdalJS是一个帮助从SPA应用程序调用web API的库,它依赖于OpenIDConnect的会话管理。这使授权机构负责会话的生命周期&允许在不刷新令牌的情况下更新访问令牌。如果您有兴趣了解更多信息,请参阅感谢您的评论。由于我是认证领域的新手,并且已经有一台服务器运行此机制,所以在进入下一步之前,我可能会坚持使用此方法一段时间。我只是想知道除了你提到的问题之外,还有没有其他问题。就连我也担心同样的问题,但没有得到任何帮助
app.factory('authInterceptor', function($q, $injector, $location, localStorageService) {
    var authInterceptor = {};
    var $http;

    var request = function(config) {
        config.headers = config.headers || {};

        var jsonData = localStorageService.get('AuthorizationData');
        if (jsonData) {
            config.headers.Authorization = 'Bearer ' + jsonData.token;
        }

        return config;
    }

    var 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('/login');
                deferred.reject(rejection);
            });
        } else {
            deferred.reject(rejection);
        }

        return deferred.promise;
    }

    var _retryHttpRequest = function(config, deferred) {
        $http = $http || $injector.get('$http');
        $http(config).then(function(response) {
            deferred.resolve(response);
        }, function(response) {
            deferred.reject(response);
        });
    }

    authInterceptor.request = request;
    authInterceptor.responseError = responseError;

    return authInterceptor;
});