【发布时间】:2014-08-27 16:34:31
【问题描述】:
每当服务器返回 401“未授权”响应时,我都会使用 angular-http-auth 显示登录对话框。
由于我很酷,我还尝试反序列化我的服务中的响应对象。例如,如果服务请求 car 并且响应是 {make: Honda, model: Civic},我尝试使用 transformResponse 将其反序列化为 Car 对象。
例如:
getCar: function() {
return $http.get('/api/car', {
method: 'GET',
transformResponse: function(data, headers) {
var c = angular.fromJson(data);
return new Car(c);
}
});
}
这不适用于angular-http-auth。如果响应是 401 Unauthorized,您将收到一个 javascript 错误。这是因为 Angular 会尝试运行 transformResponse 代码,即使响应是 401。
事实证明$http 拦截器(这是angular-http-auth 使用的)在transformResponse 代码之后运行。这是一个大问题,因为如果服务器响应是 401,transformResponse 中的所有代码都不会起作用(不会有任何 data)
这是其他人的问题吗?你是怎么解决的?如果我使用$http 拦截器,我是否不使用transformResponse?
【问题讨论】:
标签: angularjs authentication angular-http-auth