代码之家  ›  专栏  ›  技术社区  ›  konzo

如何使微风识别成功重试的savechanges()请求

  •  1
  • konzo  · 技术社区  · 9 年前

    我有一个拦截器,它自动检测到401错误,获取一个新令牌并重新启动请求。。。

    问题是,在执行此操作时,实体管理器也收到了此错误,因为它没有意识到请求被重做,导致下一次保存更改重复。

    我已经试过了,但似乎找不到方法来通知微风实体已被保存。。

    这个 要求 响应被此拦截

      var responseError = function (rejection) {
    
            var authService = $injector.get("auth");
            var authData = localStorageService.get("authorizationData");
    
            if (rejection.status === 401) {
                if (authData && authData.refreshToken) {
                    authService.refreshToken()
                        .then(function () {
                            var $http = $injector.get("$http");
                            return $http(rejection.config);
                        },
                        function (error) {
                            $location.path("/login");
                            return error;
                        });
                }
                else {
                    authService.logOut();
                    $location.path("/login");
                }
    
            }
            return $q.reject(rejection);
        };
    

    有没有办法通知微风重试成功?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Ward    9 年前

    我认为问题是你的拦截器 总是 下降到最后一行并返回原始401拒绝。

    我认为您缺少返回重试承诺的return语句:

    if (rejection.status === 401) {
        if (authData && authData.refreshToken) {
            return authService.refreshToken().
            ...