我正在使用angularFireAuth,我想检索登录用户的信息并使用 应用程序初始化时的所有控制器或服务。
目前,我在每个控制器中都使用了这个,但我遇到了一些问题。
$scope.$on("angularFireAuth:login", function(evt, user){
console.log(user);
});
如果回调不是整页加载,则回调将不会调用,或者在应用初始化时返回null。
我需要一些提示,以便我如何返回经过身份验证的用户的信息,这样我就可以在app初始时以及所有控制器和服务中使用。
实施例
在控制器或服务中时
$scope.auth.user.id
将返回用户ID $scope.auth.user.name
将返回用户名答案 0 :(得分:2)
我会以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
注入您希望用户的任何位置。
我目前正在处理的应用使用此功能 - https://github.com/manojlds/EventBase/blob/master/app/scripts/controllers/login.js
根据此处提出的想法 - http://blog.brunoscopelliti.com/deal-with-users-authentication-in-an-angularjs-web-app
答案 1 :(得分:1)
我不确定你的问题是什么。但是如果你想要一次而不是在每个控制器中进行授权,你可以将代码放入模块中,然后将其放入$ rootScope。
var myapp = angular.module('myapp').run(
function ($rootScope) {
$rootScope.user = null;
$rootScope.$on("angularFireAuth:login", function (evt, user) {
$rootScope.user = user;
});
});