ott*_*der 0 javascript http angularjs
在我的Angular应用程序中,我有一个登录功能.但是当我发送错误的凭据并且响应带有状态401:Bad Credentials(甚至是response.status = 401)时,它仍然会成功.
所以我得到$ notify"我的拦截器中的成功登录然后是html错误页面.这令人困惑.我不知道我做了什么来制造这个混乱.
this.getTokenCustom = function (user) {
$http.post('/login',
JSON.stringify({username: user.username, password: user.password}))
.then(
function success(response) {
localStorage.setItem('token', response.data.token);
$.notify({message: "Success login"},{type:'success'});
$state.go('roles');
},
function error(data) {
console.log(data);
$.notify({message: data.data.message},{type:'danger'});
}
);
};
Run Code Online (Sandbox Code Playgroud)
UPD
this.getTokenCustom = function (user) {
$http.post('/login',
JSON.stringify({username: user.username, password: user.password}))
.then(
function success(response) {
localStorage.setItem('token', response.data.token);
$.notify({message: response.status + " Success login"},{type:'success'});
$state.go('roles');
},
function error(data) {
console.log(data);
$.notify({message: data.data.message},{type:'danger'});
}
);
};
Run Code Online (Sandbox Code Playgroud)

小智 6
可能的原因是您可能有一个不能正确处理错误条件的自定义拦截器.
这篇文章可以指出你正确的方向:http://www.jamessturtevant.com/posts/AngularJS-HTTP-Service-Success-Handler-400-Response-Code-and-Interceptors/
引用帖子:
处理拦截器的requestError或responseError并希望将错误传递给下一个处理程序时,必须使用promise api拒绝该消息:
$httpProvider.interceptors.push(function($q) {
return {
'requestError': function(rejection) {
// handle same as below
},
'responseError': function(rejection) {
if (canRecover(rejection)) {
// if you can recover then don't call q.reject()
// will go to success handlers
return responseOrNewPromise;
}
// !!Important Must use promise api's q.reject()
// to properly implement this interceptor
// or the response will go the success handler of the caller
return $q.reject(rejection);
}
};
});
Run Code Online (Sandbox Code Playgroud)
在Angular的Github 存储库中报告了与您类似的问题,该问题与自定义拦截器无法正确处理错误条件有关.
| 归档时间: |
|
| 查看次数: |
1071 次 |
| 最近记录: |