我正在使用ionic和angularfire构建一个应用程序,我不理解使用$ onAuth维护会话的逻辑。我知道这个功能是如何工作的,但我不确切知道在哪里使用它..
我是否需要在每个控制器中注入$ onAuth并且如果authData为null则为veirfy(然后使用$ unauth并正确地重定向用户)或者有一种方法可以将此函数($ onAuth)集中化在另一个文件中,如果authData为null,则让ir列表然后再做一些事情?
随意询问问题是否不清楚!
提前感谢所有帮助的人! :)
答案 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
});
}