2

我正在使用 angularFireAuth,我想在应用程序初始时检索登录用户的信息并在所有控制器或服务中使用。

目前,我在每个控制器中都使用了它,但我遇到了一些问题。

$scope.$on("angularFireAuth:login", function(evt, user){ 
  console.log(user);
});

如果不是完整页面加载,则回调将不会调用,或者在应用初始时返回 null。

我需要一些关于如何返回经过身份验证的用户信息的提示,以便我可以在应用程序初始时以及在所有控制器和服务中使用。

例子

在控制器或服务中时

  • $scope.auth.user.id将返回用户的 ID
  • $scope.auth.user.name将返回用户名
  • ETC
4

2 回答 2

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

于 2013-08-27T05:25:38.413 回答
1

我不太确定你的问题是什么。但是,如果您希望授权一次而不是在每个控制器中授权,则可以将代码放入模块中,然后将其放入 $rootScope。

var myapp = angular.module('myapp').run(
    function ($rootScope) {
        $rootScope.user = null;

        $rootScope.$on("angularFireAuth:login", function (evt, user) {
            $rootScope.user = user;

        });
    });
于 2013-08-26T05:31:57.063 回答