在我的离子2应用程序中,我有4个提供HTTP请求的服务。这些服务可以从我的应用中的8个不同页面中击中。我想处理以下情况:授权令已过期或删除或对此的任何变化。因此,如果用户访问其中一项服务,并且它返回了401个未经授权的错误,则如何处理错误并导航到我的登录页面,而无需在使用该服务的所有这些页面上放置条件。
要重申:我更喜欢处理在服务中进行请求的错误,并从那里导航到我的登录页面,这是可能的吗?
有更好的方法来处理此问题吗?任何建议。
Heres我所需的流程:
- 在任何页面上,从我的一项服务(在服务中(提出API请求
- 如果请求返回未经授权的错误(在服务中(
- 清晰的用户数据(在服务中(
- 导航到登录页面(在服务中(
- 否,(假设请求成功(
- 解析/使用我的页面中的数据(页面(
您可以使用Interceptor检查状态代码,如果响应到401,则重定向到登录页面。希望您必须知道拦截器实施
angular
.module('myProject.myModule')
.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push(['$q', '$location', function ($q, $location) {
return {
'responseError': function(response) {
if(response.status === 401) {
$location.path('/login');
}
if(response.status === 200) {
return $q.resolve(response);
}
return $q.reject(response);
}
};
}]);
}]);