gpt4 book ai didi

javascript - 尝试在 401 服务器响应上触发 ui-modal

转载 作者:行者123 更新时间:2023-11-30 12:43:46 25 4
gpt4 key购买 nike

我试图在服务器响应 401 状态代码时触发登录模式。基于本指南 https://medium.com/opinionated-angularjs/7bbf0346acec我已经创建了一个这样的状态代码拦截器。

// intercept http status codes
app.config(function ($httpProvider) {
$httpProvider.interceptors.push(['$injector', function ($injector) {
return $injector.get('AuthInterceptor');
}]);
});

app.factory('AuthInterceptor', function ($rootScope, $q) {
return {
responseError: function (res) {
if (res.status === 401) {
console.log('AuthInterceptor says you are not authorized');
}
if (res.status === 404) {
console.log('AuthInterceptor says this page is not found');
}
return $q.reject(res);
}
};
});

当我尝试使用 $modal 注入(inject)我的 AuthInterceptor 工厂时,出现循环依赖错误。从这样的东西触发 $modal 的好习惯是什么?我链接的指南使用这个 AuthInterceptor 工厂来广播“Auth_events”,它们只是常量字符串。除了广播它们之外,他们没有显示对这些 auth_events 的任何使用,所以我不明白它们应该如何工作。除了我的主要问题之外,任何人都可以澄清这些身份验证事件的作用吗?

最佳答案

由于 $modal 服务依赖于 $http,您将收到循环依赖错误。这是 $http 拦截器的一个常见问题,它们依赖于 $http 本身。幸运的是,补救措施很简单:您需要将 $injector 注入(inject)拦截器并从注入(inject)器中检索 $model,如下所示:

 app.factory('AuthInterceptor', function ($rootScope, $q, $injector) {
return {
responseError: function (res) {

var $modal = $injector.get('$modal');

if (res.status === 401) {
//you can use $modal here...
console.log('AuthInterceptor says you are not authorized');
}
if (res.status === 404) {
console.log('AuthInterceptor says this page is not found');
}
return $q.reject(res);
}
};
});

关于javascript - 尝试在 401 服务器响应上触发 ui-modal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23373800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com