我想在我的 Angular 应用程序中创建或多或少的通用错误处理程序。
例如,我收到一封带有此链接的邮件:mysite/messages/151 单击此邮件:如果我没有登录,我的框架会返回 403(故意)。
所以我创建了这个工厂。目前它只查找 403 错误,然后将用户路由到登录页面。
app.factory('httpRequestInterceptor', ['$q', '$location', '$rootScope', function($q, $location) {
return {
'responseError': function(rejection) {
if (rejection.status === 403) {
$location.path('/user/login');
return $q.reject(rejection);
}
}
};
}]);
在 app.config 我添加了这一行:
app.config(['$httpProvider', function($httpProvider)
{
$httpProvider.interceptors.push('httpRequestInterceptor');
现在,当我得到一个 403 时,我走的是正确的路径:/user/login 到目前为止,一切都很好。
但是...我想以某种方式添加 $state,这样我就知道调用 url 是什么(messages/151),这样我就可以返回正确的位置并显示消息。
我不能在工厂中使用 $state(由于一些我还不了解的技术问题($http vs $state?)而出错,所以现在我很困惑如何完成这些事情。
所以,我想要:
1)在 URL 上出现 403 错误进入登录状态(有效)
2)从用户(作品)获取登录凭据
3)登录后转到网址是可以的(不是线索)
也许我应该使用另一种方法,但我无法理解它。所以希望有人可以帮助我吗?