我正在使用 angularFireAuth,我想检索登录用户的信息并在中使用 应用程序初始时的所有 Controller 或服务。
目前,我在每个 Controller 中都使用了这个,但我遇到了一些问题。
$scope.$on("angularFireAuth:login", function(evt, user){
console.log(user);
});
如果不是全页加载,则不会调用该回调,或者在应用初始化时返回 null。
我需要一些关于如何返回经过身份验证的用户信息的提示,以便我可以在应用程序初始时以及在所有 Controller 和服务中使用。
示例
当在 Controller 或服务中时
$scope.auth.user.id
将返回用户的 ID$scope.auth.user.name
将返回用户名- 等等
最佳答案
我将从 userService
开始:
angular.module('EventBaseApp').service('userService', function userService() {
return {
isLogged: false,
username: null
}
});
并编写一个LoginCtrl
Controller :
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
注入(inject)到您想要用户的任何地方。
我当前正在开发的应用程序使用此 - 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
关于angularjs - 如何获取经过身份验证的用户信息并在所有 Controller 和服务中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18437120/