2014-09-25 61 views
1

我正在尋找一種清晰優雅的方式,讓當前登錄的用戶在我的應用中處處暴露,因爲我有一個導航部分視圖,其中包含用戶信息以及一個註銷按鈕,但我一直無法完成。在Angular和Firebase中全球公開顯示當前登錄用戶

我的出發點是這個示例應用程序https://github.com/firebase/angularfire-seed和 我剛剛添加了一個AppCtrl,我可以公開當前登錄的用戶。我曾嘗試添加用戶提供程序,但這也不起作用。

controllers.js

.controller('AppCtrl', ['$scope', '$rootScope','simpleLogin', 'fbutil', '$location', function($scope, $rootScope, simpleLogin, fbutil, $location) { 
    $scope.user = simpleLogin.getUser(); 
    $scope.logout = function() { 
    var profile = fbutil.syncObject(['users', simpleLogin.getUser().uid]); 
    profile.$destroy(); 
    simpleLogin.logout(); 
    $location.path('/login'); 
    }; 
}]) 

的index.html

<body ng-controller="AppCtrl"> 

您的幫助將是非常讚賞。

回答

3

看一看resolve參數 - 它存在於$routerProvider$stateProvide之間。 resolve解決對象(包括解析承諾),然後這些對象可用於您的控制器。在這種情況下,你在控制器中「解決」您loggedInUser變數(做任何你需要通過身份驗證的服務做的。

$routeProvider 
    .when("/someSecuredContent", { 
    templateUrl: 'someSecuredContent.html', 
    controller: 'SecuredController', 
    resolve: { 
     loggedInUser: function(MyAuth){ 
      return MyAuth.loggedIn(); // MyAuth.loggedIn() should return a $q promise 
     } 
    } 
}); 

然後,loggedInUser將被注入。

這裏有一個site更多

+1

這也是[在AngularFire指南中介紹的](https://www.firebase.com/docs/web/libraries/angular/guide.html#section-routes)以及一些Firebase身份驗證的工作示例。 – Kato 2014-09-30 02:44:43

0

在使用多種方法來全局公開當前登錄用戶之後,我認爲最好在tutorial中描述,特別是在「在整個應用程序中訪問當前用戶」部分。認爲他們已經有了弧線這種類型的應用程序的權利。

相關問題