我正在尝试在 AngularJS 中创建一个拦截器来检查我是否已经登录。它通过查看$rootScope.user
变量来做到这一点。
如果该$rootScope.user
变量不存在,那么我想进行 Ajax 调用以查看服务器上是否还有活动的 Session。
问题是我最终陷入了无限循环,因为我的拦截器正在拦截我所有的 Ajax 请求......
我现在基本上有这个:
.factory('resourceInterceptor', ['$rootScope', 'AccountService', function($rootScope, accountService) {
return {
request: function(request) {
if(!$rootScope.user) {
var userData = accountService.getUserSession(); // creates loop
//var userData = $http.get('api/Account'); // Same thing
}
return request;
}
}
}]);
但这不起作用,它给出了这个错误:
Error: [$injector:cdep] Circular dependency found: $http <- $resource <- AccountService <- resourceInterceptor <- $http <- $compile
或与 $http 相同:
Error: [$injector:cdep] Circular dependency found: $http <- resourceInterceptor <- $http <- $compile
那么我该如何解决这个问题呢?我想从我的拦截器发出一个 Ajax 请求,这样我就可以从数据库中检索用户信息。
请注意:我知道实现某种身份验证方法有很多不同的,也许是更好的方法,比如在标头中使用令牌。我知道这一点,我并不是在寻找有关不同的、更好的身份验证方法的答案。我想得到关于这个特定问题的答案。