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

时间:2015-07-20 04:59:35

标签: angularjs breeze interceptor

我有一个拦截器,可以自动检测401错误,获取一个新的令牌,重新激活请求......

问题在于,当它执行此breeze实体管理器时也获得此错误,而不知道请求被重做,导致下一次保存更改重复。

我已经尝试过,似乎无法找到通知breeze实体保存的方式..

拦截请求响应
  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 个答案:

答案 0 :(得分:1)

我认为问题在于你的拦截器 总是 落到最后一行并返回原来的401拒绝。

我认为你错过了将返回重试承诺的return语句:

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