Angularjs 如何获取经过身份验证的用户信息并在所有控制器和服务中使用?
我正在使用angularFireAuth,我想检索登录用户的信息并在中使用 应用程序初始化时的所有控制器或服务 目前,我在每个控制器中都使用了这个,但我遇到了一些问题Angularjs 如何获取经过身份验证的用户信息并在所有控制器和服务中使用?,angularjs,firebase,angularfire,Angularjs,Firebase,Angularfire,我正在使用angularFireAuth,我想检索登录用户的信息并在中使用 应用程序初始化时的所有控制器或服务 目前,我在每个控制器中都使用了这个,但我遇到了一些问题 $scope.$on("angularFireAuth:login", function(evt, user){ console.log(user); }); 如果不是整页加载,回调将不会调用,或者在应用程序初始化时返回null 我需要一些技巧,我如何才能返回经过身份验证的用户的信息,以便我可以使用时,应用程序是初始的,在
$scope.$on("angularFireAuth:login", function(evt, user){
console.log(user);
});
如果不是整页加载,回调将不会调用,或者在应用程序初始化时返回null
我需要一些技巧,我如何才能返回经过身份验证的用户的信息,以便我可以使用时,应用程序是初始的,在所有的控制器和服务
范例
在控制器或服务中时
将返回用户的id$scope.auth.user.id
将返回用户名$scope.auth.user.name
- 等
- 我不太清楚你的问题是什么。但是,如果您希望授权一次,而不是在每个控制器中,那么您可以将代码放入模块中,然后将其放入$rootScope
var myapp = angular.module('myapp').run(
function ($rootScope) {
$rootScope.user = null;
$rootScope.$on("angularFireAuth:login", function (evt, user) {
$rootScope.user = user;
});
});
我将从一个
userService
开始:
angular.module('EventBaseApp').service('userService', function userService() {
return {
isLogged: false,
username: null
}
});
并编写一个LoginCtrl
控制器:
angular.module('EventBaseApp')
.controller('LoginCtrl', function ($scope, userService, angularFireAuth) {
var url = "https://example.firebaseio.com";
angularFireAuth.initialize(url, {scope: $scope, name: "user"});
$scope.login = function() {
angularFireAuth.login("github");
};
$scope.logout = function() {
angularFireAuth.logout();
};
$scope.$on("angularFireAuth:login", function(evt, user) {
userService.username = $scope.user;
userService.isLogged = true;
});
$scope.$on("angularFireAuth:logout", function(evt) {
userService.isLogged = false;
userService.username = null;
});
});
将userService
插入用户所需的任何位置
我当前正在使用的应用程序使用此-
根据这里介绍的想法-我将其投入服务。然后在.run()中运行它,并在控制器中调用$scope.user。它总是返回null,根本不监听。我提出了另一个问题。您必须显示您的代码。你是在把用户服务注入你的控制器吗?我刚才看了你的另一个问题。你在正确的道路上。authservice只需要在需要的地方注入控制器或服务。因为它是单例,所以只会登录一次。@Anton仍然不工作。这是plunker请检查,谢谢plunker给出了404未发现错误。url正确吗?