2013-06-04 47 views
4

我正在使用Express和Passport進行身份驗證和授權的節點應用程序,並且所有工作都正常。然而,我很困惑,我將如何在Angular控制器中獲得當前用戶(由Passport設置爲req.user)。AngularJS - 訪問節點/快速會話信息

我希望能夠做正常的事情就像在顯示頁眉/導航欄上的用戶名(除其他事項外),和我目前做這個用的玉視圖引擎,但我不喜歡使用混合一些「數據綁定」和Angular的Jade視圖引擎。

現在,我知道我可以很容易地調用api終端節點,它將req.user作爲JSON返回,但這看起來像一個醜陋的解決方案,因爲每當有一個頁面時我都會碰到該終端節點負載(這不是SPA)。

所以我的問題基本上是這樣的:我可以在我的Angular視圖中獲取當前登錄的用戶,因此我可以執行所有數據綁定客戶端而不是某些服務器端(使用Jade視圖引擎)和某些客戶端與角?

注意:沒有代碼片段,因爲一切實際上都按預期工作,我只是希望有一個比我目前更好的替代方案。

回答

1

考慮在定義ng-app的DOM上使用「ng-init」,這是在Express中打印的服務器端數據(假定爲灰塵模板)。下面是一個簡單的例子:

<body ng-app="testApp" ng-controller="homeCtrl" ng-init="logged_in_user = {req.user}"> 
     <div... 
     ... 
    </body> 

,那麼你可以訪問LOGGED_IN_USER在homeCtrl,爲「scope.logged_in_user」 希望這有助於..

-Bhaskara

+0

我認爲這是相當很多我在找的東西。當我嘗試了一堆不同的東西時,我確實有一個從此應用程序的前一個迭代剩餘的根範圍,我認爲這將是這樣的完美之處。標記爲答案,除非我遇到不了解的問題。 :) 非常感謝你! –

+0

希望我可以編輯我以前的評論。我確實在玩這個遊戲的時候做了一些工作,我可能會擴展一些,但我有基礎工作,所以再次感謝你! :) –

+1

@JamesMcConnell雖然你可以使用'$ rootScope',但更好的地方是一個服務,你可以在必要時注入控制器並訪問私有API。 – dmackerman