处理离子/角火的$ onAuth维护的最佳方法

时间:2016-02-05 01:37:51

标签: ionic-framework firebase angularfire

我正在使用ionic和angularfire构建一个应用程序,我不理解使用$ onAuth维护会话的逻辑。我知道这个功能是如何工作的,但我不确切知道在哪里使用它..

我是否需要在每个控制器中注入$ onAuth并且如果authData为null则为veirfy(然后使用$ unauth并正确地重定向用户)或者有一种方法可以将此函数($ onAuth)集中化在另一个文件中,如果authData为null,则让ir列表然后再做一些事情?

随意询问问题是否不清楚!

提前感谢所有帮助的人! :)

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式实现目标。最糟糕的是采用你描述的方式并将其放在每个控制器中,因为你应该保留你的代码DRY。您的目标显然是只编写$onAuth一次的方法。

一种简单的方法是在你的dom的最顶端安装一个MainController(就像最外面的html元素一样,例如body标签)。然后,您可以使用子控制器从父控制器访问数据,如下所述。 here。您可以在主控制器中注入$onAuth服务,并让它执行您的逻辑,您可以使用其所有子控制器中的$scope访问主控制器的authData

更可重用的部分是编写一个可以从所有控制器访问的服务。在这里找到一个很棒的教程。

最简单的方法是在模块的run block中加载$onAuth并将其保存在$rootScope中,以后也可以从所有控制器访问。 Here是一个身份验证示例。你会写

angular.module('your-module').run(function($rootScope, Auth) {
  $rootScope.auth = Auth;
  $rootScope.auth.$onAuth(function(authData) {
    $rootScope.authData = authData;
    //do anything you want here, e.g. redirect
  });
}