2015-01-14 55 views
2

我有一個非角度登錄頁面的angularjs應用程序。所以登錄後你被重定向到角度的應用程序。我已經設置了一個$ httpProvider,這樣任何導致401的請求都會將用戶重定向回登錄頁面。保持用戶信息跨應用程序緩存

與此同時,用戶在應用程序中,我希望可以隨時爲應用程序提供用戶詳細信息。像用戶名,一些設置等,理想情況下,我會有這個信息在初始視圖加載之前可用。理想情況下,我只能抓住這個信息一次。

這樣做的最好方法是什麼?我可以使用服務在控制器/視圖之間緩存用戶,但是我怎樣才能使它在主視圖顯示給用戶之前具有必要的信息(因爲有些數據是顯示初始視圖所必需的)?

+0

所以你說如果刷新頁面,即使登錄,你也會被重定向到登錄頁面? –

+0

否 - 服務器爲所有登錄用戶呈現應用程序。所以如果你刷新,你仍然登錄,你將繼續在應用程序。但如果你的會話過期,然後刷新,你將被重定向到服務器的登錄頁面*(而返回401的請求將重定向到客戶端的登錄頁面*) – hackerhasid

+0

您可以簡單地使用服務/工廠。該服務將執行一個Ajax請求來獲取數據,然後將其存儲。服務是單身,因此數據應該在控制器之間可用。這也意味着Ajax請求只會發生一次。 –

回答

0

你使用的是ngRoute還是uiRouter?利用其resolve功能,可以讓您在路由更改/狀態更改發生之前解決承諾。如上所述使用服務。給它一種方法,一旦你檢查了你是否已經登錄,就可以解決承諾。

響應到達後,解決承諾。然後Angular將實例化控制器並進行路由轉換,並且您可以再次注入服務並使您的頁面知道內容已準備就緒。

0

當成功登錄時,您可以將用戶詳細信息保存在本地存儲中。你可以通過在你的代碼中注入$ localstorage來檢索角度空間中任何地方的信息

相關問題