如何使 breeze 识别成功重试的 savechanges() 请求
How to make breeze recognize a successful retried savechanges() request
我有一个拦截器,它会自动检测 401 错误,获取 re-fires 请求的新令牌...
问题是在执行此操作时 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);
};
有什么方法可以通知 breeze 重试成功?
我认为问题是您的拦截器 总是 掉落到最后一行并 returning 原来的401 拒绝。
我认为您遗漏了 return 声明,该声明会 return 重试承诺:
if (rejection.status === 401) {
if (authData && authData.refreshToken) {
return authService.refreshToken().
...
我有一个拦截器,它会自动检测 401 错误,获取 re-fires 请求的新令牌...
问题是在执行此操作时 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);
};
有什么方法可以通知 breeze 重试成功?
我认为问题是您的拦截器 总是 掉落到最后一行并 returning 原来的401 拒绝。
我认为您遗漏了 return 声明,该声明会 return 重试承诺:
if (rejection.status === 401) {
if (authData && authData.refreshToken) {
return authService.refreshToken().
...