angularjs - 如何获取经过身份验证的用户信息并在所有 Controller 和服务中使用?

标签 angularjs firebase angularfire

我正在使用 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/

相关文章:

ios - 如何将带键的字典传递给 TableView

c# - 无法使用 Firebase 插入数据

javascript - Angularfire - 检索数组中所有对象的唯一ID

javascript - AngularJS:表单提交后保留下拉选项

jquery - 以 Angular 插入 DIV 文本

javascript - ionic /Angular Directive(指令)绑定(bind)到滚动

javascript - AngularJS ng-click 不起作用

ios - Firebase 通知注册正常,但 ios swift 未收到通知(在 Xcode 升级到 8.3.2 之前工作正常)

javascript - 网络上的 Firestore 是否对两个听众收取两次读取费用?

javascript - 你如何对 AngularFire 集合进行排序?