使用AngularFire抛出的AngularJS错误:发生了网络错误(例如超时,中断连接或无法访问的主机)

时间:2018-04-04 16:07:43

标签: angularjs networking angularfire

我正在尝试使用新功能,并且不完全了解AngularJS和Firebase如何互动。我创建的应用程序是使用Firebase和AngularFire在AngularJS中编写的。我目前正在IE中测试。

应用程序登录时没有问题,但当它闲置一段时间时,$ onAuthStateChanged()函数不再返回经过身份验证的用户,但$ requireSignIn()函数继续返回true。这意味着我可以浏览到需要身份验证的任何网页,但我实际上并没有经过身份验证的用户,因此我网站上的许多功能都被隐藏了(我使用ng-show来显示当有用户时控制。

当我打开调试时,我在auth.js的第12行出现此错误

Error: A network error (such as timeout, interrupted connection or unreachable host) has occurred.

这个错误是不变的,只要我点击“否”进行调试,我就会得到另一个错误。

这也在控制台中,但我不知道它是否相关:

XMLHttpRequest for https://securetoken.googleapis.com/v1/token?key=<removed key> required Cross Origin Resource Sharing (CORS).
XMLHttpRequest for https://securetoken.googleapis.com/v1/token?key=<removed key> required CORS preflight.
XMLHttpRequest: Network Error 0x80070005, Access is denied.

我已经尝试过使用console.log()来查看我制作它的程度,但是一旦问题开始发生,该网站似乎无法到达任何地方。同样,它一开始工作正常,直到它闲置一段时间。

我无法判断我是否在Google Chrome上遇到了同样的问题,到目前为止还没有发生。任何建议将不胜感激,如果看到我的任何代码会有所帮助,请告诉我。

1 个答案:

答案 0 :(得分:0)

我想我找到了解决这个问题的方法。我迫使10分钟后超时并重定向到登录页面。我用ngIdle模块完成了这个,在这里找到:

https://github.com/HackedByChinese/ng-idle

这更像是一种解决方法,而不是一种解决方案,但这就是我最终要做的事情:

var adminConsoleApp = angular.module('adminConsoleApp', ['ngRoute', 'firebase', 'ngIdle']);

adminConsoleApp.config(['IdleProvider', 'KeepaliveProvider', function(IdleProvider, KeepaliveProvider) {
  IdleProvider.idle(10*60); // 10 minutes idle
  IdleProvider.timeout(30); // after 30 seconds idle, time the user out
  KeepaliveProvider.interval(5*60); // 5 minute keep-alive ping
}]);

adminConsoleApp.run(['Idle', function(Idle) {
  Idle.watch();
}]);

adminConsoleApp.run(['$rootScope', '$location', 'Authentication', function($rootScope, $location, Authentication) {
  $rootScope.$on('IdleTimeout', function() {
    Authentication.logout();
    $location.path('/login');
  });
}]);